实验6GUI编程与事件处理.docx
- 文档编号:5601873
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:27
- 大小:344.68KB
实验6GUI编程与事件处理.docx
《实验6GUI编程与事件处理.docx》由会员分享,可在线阅读,更多相关《实验6GUI编程与事件处理.docx(27页珍藏版)》请在冰豆网上搜索。
实验6GUI编程与事件处理
实验6GUI编程与事件处理
一、实验目的
1、了解GUI的基本概念;
2、掌握javax.swing包中的基本的常用的GUI组件;
3、了解和使用常用的布局管理器;
4、掌握Java的事件处理基本概念和使用方法。
二、实验环境
1、PC微机;
2、DOS操作系统或Windows操作系统;
3、Javasdk程序开发环境、eclipse集成环境。
三、实验内容
1.名片录入管理程序的界面设计。
设计一个名片录入管理程序界面(如图1所示),用于录入基本名片信息:
姓名、称谓(可包括总裁、总经理、经理、主任、处长、院长、校长、科长、教授等)、工作单位、工作地址、电话1、电话2、手机、传真、邮编等基本内容,选择“确定”按钮则将输入信息通过消息框显示出来(如图2所示),若选择“取消”按钮,则关闭窗口。
图1
图2
packagemyjava;
importjava.awt.BorderLayout;
importjava.awt.FlowLayout;
importjava.awt.GridLayout;
importjava.awt.event.*;
importjavax.swing.*;
publicclassBusinessCardEntryManagement{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
BusinessCardframe=newBusinessCard();
frame.pack();
frame.setTitle("名片录入管理");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
classBusinessCardextendsJFrame{
privateJLabelJlblName=newJLabel("姓名");
privateJTextFieldJtfName=newJTextField(10);
privateJLabelJlblSex=newJLabel("性别");
privateStringSex="男";
privateJRadioButtonJrbMale=newJRadioButton("男",true);
privateJRadioButtonJrbFemale=newJRadioButton("女");
privateJLabelJlbljcbo=newJLabel("称谓");
privateStringJob="总裁";
privateJLabelJlblWorkUnit=newJLabel("工作单位");
privateJTextFieldJtfWorkUnit=newJTextField(28);
privateJLabelJlblWorkAddress=newJLabel("工作地址");
privateJTextFieldJtfWorkAddress=newJTextField(28);
privateJLabelJlblTelephone1=newJLabel("电话1");
privateJTextFieldJtfTelephone1=newJTextField(13);
privateJLabelJlblTelephone2=newJLabel("电话2");
privateJTextFieldJtfTelephone2=newJTextField(13);
privateJLabelJlblCellphone=newJLabel("手机");
privateJTextFieldJtfCellphone=newJTextField(13);
privateJLabelJlblFax=newJLabel("传真");
privateJTextFieldJtfFax=newJTextField(14);
privateJLabelJlblEmail=newJLabel("E-mail");
privateJTextFieldJtfEmail=newJTextField(30);
privateString[]JobPost={
"总裁","总经理","经理","主任","处长","院长","校长","科长","教授"
};
privateJComboBoxjcbo=newJComboBox(JobPost);
privateJButtonJbtOK=newJButton("确定");
privateJButtonJbtCancel=newJButton("取消");
publicBusinessCard(){
JPanelp1=newJPanel(newFlowLayout(FlowLayout.LEFT));
p1.add(JlblName);
p1.add(JtfName);
p1.add(JlblSex);
p1.add(JrbMale);
p1.add(JrbFemale);
ButtonGroupgroup=newButtonGroup();
group.add(JrbMale);
group.add(JrbFemale);
JrbMale.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Sex="男";
}
});
JrbFemale.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Sex="女";
}
});
p1.add(Jlbljcbo);
p1.add(jcbo);
jcbo.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
Job=JobPost[jcbo.getSelectedIndex()];
}
});
JPanelp2=newJPanel(newFlowLayout(FlowLayout.LEFT));
JPanelp3=newJPanel(newFlowLayout(FlowLayout.LEFT));
p2.add(JlblWorkUnit);
p2.add(JtfWorkUnit);
p3.add(JlblWorkAddress);
p3.add(JtfWorkAddress);
JPanelp4=newJPanel(newFlowLayout(FlowLayout.LEFT));
JPanelp5=newJPanel(newFlowLayout(FlowLayout.LEFT));
p4.add(JlblTelephone1);
p4.add(JtfTelephone1);
p4.add(JlblTelephone2);
p4.add(JtfTelephone2);
p5.add(JlblCellphone);
p5.add(JtfCellphone);
p5.add(JlblFax);
p5.add(JtfFax);
JPanelp6=newJPanel(newFlowLayout(FlowLayout.LEFT));
p6.add(JlblEmail);
p6.add(JtfEmail);
JPanelp7=newJPanel();
p7.add(JbtOK);
p7.add(JbtCancel);
JbtOK.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"姓名:
"+JtfName.getText()+
"\n"+"性别:
"+Sex+"\n"+"称谓:
"+Job+"\n"+"工作单位:
"+
JtfWorkUnit.getText()+"\n"+"工作地址:
"+JtfWorkAddress.getText()+
"\n"+"电话1:
"+JtfTelephone1.getText()+"\n"+"电话1:
"+JtfTelephone2.getText()+
"\n"+"手机:
"+JtfCellphone.getText()+"\n"+"传真:
"+JtfFax.getText()+
"\n"+"E-mail:
"+JtfEmail.getText()+"\n"
);
}
});
JbtCancel.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
setVisible(false);
}
});
setLayout(newGridLayout(7,1,0,0));
add(p1);
add(p2);
add(p3);
add(p4);
add(p5);
add(p6);
add(p7);
}
}
2.记事万年历。
设计一个记事万年历(如图3所示),可显示当前月份的日历、当前时间和记事本窗口。
(1)日历可以根据窗口提供的文本框中输入的年份和月份显示不同年月的日历信息;
(2)时钟是动态的,即根据系统时间实时更新显示信息。
(3)点击“保存日志”按钮将所写日志以当前日志编辑区的日期为文件名(如20090411.txt)保存至磁盘中。
(4)点击“读取日志”按钮将从磁盘中找到指定日期的日志文件显示在日志编辑区中。
(5)点击“删除日志”按钮将日志编辑区中的字符内容清空。
图3
packagemyjava;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavax.swing.*;
importjavax.swing.Timer;
importjava.util.*;
publicclassCalendarNotepad{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
ShowCalendarNotepadframe=newShowCalendarNotepad();
frame.pack();
frame.setTitle("记事万年历");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
classShowCalendarNotepadextendsJFrame{
privateintyear=2009;
privateintmonth=4;
privateintday=11;
privateintforeNullCount=3,backNullCount=9,dayCount=30;
privateintdrawWidth=0,drawHeight=0;
privateDayJPanelp3=newDayJPanel();
privateMarkLabelp5=newMarkLabel();
privateJButtonjbtLastYear=newJButton("上年");
privateJTextFieldjtfYear=newJTextField(((Integer)year).toString(),4);
privateJButtonjbtNextYear=newJButton("下年");
privateJButtonjbtLastMonth=newJButton("上月");
privateJTextFieldjtfMonth=newJTextField(((Integer)month).toString(),4);
privateJButtonjbtNextMonth=newJButton("下月");
privateJButtonjbtsun=newJButton("SUN日");
privateJButtonjbtmon=newJButton("MON一");
privateJButtonjbttue=newJButton("TUE二");
privateJButtonjbtwed=newJButton("WED三");
privateJButtonjbtthu=newJButton("THU四");
privateJButtonjbtfri=newJButton("FRI五");
privateJButtonjbtsat=newJButton("SAT六");
privateJButtonjbtstore=newJButton("保存日志");
privateJButtonjbtdelete=newJButton("删除日志");
privateJButtonjbtread=newJButton("读取日志");
privateJTextAreajtalog=newJTextArea("日志将保存在D盘",8,40);
ShowCalendarNotepad(){
JPanelp1=newJPanel();
jbtLastYear.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(year>1900){
year--;
setAssistant();
jtfYear.setText(((Integer)year).toString());
p3.repaint();
p5.repaint();
}
}
});
jtfYear.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
inty=Integer.parseInt(jtfYear.getText());
if(y>=1900&&y<=2099){
year=y;
setAssistant();
p3.repaint();
p5.repaint();
}
else
jtfYear.setText(((Integer)year).toString());
}
});
jbtNextYear.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(year<2099){
year++;
setAssistant();
jtfYear.setText(((Integer)year).toString());
p3.repaint();
p5.repaint();
}
}
});
jbtLastMonth.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(month>1){
month--;
}
elseif(month==1){
month=12;
}
else
;
setAssistant();
jtfMonth.setText(((Integer)month).toString());
p3.repaint();
p5.repaint();
}
});
jtfMonth.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intm=Integer.parseInt(jtfMonth.getText());
if(m>=1&&m<=12){
month=m;
setAssistant();
p3.repaint();
p5.repaint();
}
else
jtfMonth.setText(((Integer)month).toString());
}
});
jbtNextMonth.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(month<12)
month++;
elseif(month==12)
month=1;
else
;
setAssistant();
jtfMonth.setText(((Integer)month).toString());
p3.repaint();
p5.repaint();
}
});
jbtstore.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
try{
storeLog(jtalog.getText());
}catch(Exceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
});
jbtdelete.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jtalog.setText("");
}
});
jbtread.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
try{
jtalog.setText(readLog());
}catch(Exceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
});
jtalog.setFont(newFont("Serif",Font.PLAIN,14));
jtalog.setLineWrap(true);
jtalog.setWrapStyleWord(true);
jtalog.setEditable(true);
JScrollPanescrollPane=newJScrollPane(jtalog);
p1.add(jbtLastYear);
p1.add(jtfYear);
p1.add(jbtNextYear);
p1.add(jbtLastMonth);
p1.add(jtfMonth);
p1.add(jbtNextMonth);
JPanelp2=newJPanel(newGridLayout(1,7));
jbtsun.setForeground(Color.red);
jbtsat.setForeground(Color.blue);
p2.add(jbtsun);
p2.add(jbtmon);
p2.add(jbttue);
p2.add(jbtwed);
p2.add(jbtthu);
p2.add(jbtfri);
p2.add(jbtsat);
setAssistant();
p3.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(Mou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验6 GUI编程与事件处理 实验 GUI 编程 事件 处理
![提示](https://static.bdocx.com/images/bang_tan.gif)