Java图形用户界面设计.docx
- 文档编号:17977834
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:23
- 大小:61.33KB
Java图形用户界面设计.docx
《Java图形用户界面设计.docx》由会员分享,可在线阅读,更多相关《Java图形用户界面设计.docx(23页珍藏版)》请在冰豆网上搜索。
Java图形用户界面设计
实验报告
课程名称Java程序设计
实验项目实验四Java图形用户界面设计
系别_______计算机学院________
专业/班级_____
姓名_____________
实验日期_______________________
成绩_______________________
指导教师
一、实验题目:
实验四JavaApplet
二、实验内容:
(1)创建一个窗口
1)窗口有“退出”菜单,选择后可退出程序
2)窗口内有“提示”按钮,单击后显示自己的班级、学号、姓名
3)“退出”按钮,单击后可退出程序
4)在窗口内实现一个计算器,可进行简单的加、减、乘、除操作
(2)编写一个窗口程序,模拟交通信号灯。
用户从红、黄、绿三色灯中选择一种,选择单选按钮后,相应的灯亮,并且一次只能亮一种灯。
程序起始时刻所有的灯都不亮。
提示:
在界面上画图使用了绘图类Graphics,
其中在java.awt.Component类中声明paint()和repaint()方法用于显示和刷新图形。
声明如下:
Publicvoidpaint(Graphicsg)
Publicvoidrepaint()
Paint()方法中,通过Graphic对象g调用绘图方法,在制定组件是绘图,例如下面的画图程序:
PublicclasscfextendsJFrame{
Publicvoidpaint(Graphicsg){
Intx=0,y=0;
X=this.getWidth()/4;
y=this.getHeight()/4;
intd=Math.min(this.getWidth()/2,this.getHeight()/2);
g.setColor(Color.red);
g.setOval(x,y,d,d)
}
}
(3)选作:
在
(2)中界面的基础上,将三个单选按钮换成一个ComboBox组件,可通过该组件来设置灯亮的时间,例如:
10秒、15秒等。
每次设置完时间后,会间隔特定的时间来依次显示红灯、黄灯、绿灯。
提示:
该自动显示灯亮的程序属于一个简单的动画程序,需要用Swing中的Timer类来开发这类定时执行任务的程序。
importjava.swing.Timer;
动画程序是让程序根据一定的规则不断对画布进行重新绘制。
一般的实现策略是,将绘制的规则编写到paint()方法中,定时让paint()方法重新绘制画布即可。
(4)选作:
编写窗口程序,当点击左侧窗格中的某班级结点时,在右侧将显示此班级的学生信息表格。
提示:
使用组件JTable和JTree来实现上诉功能
3、程序清单及结果:
(需要标明实现程序对应的实验内容,并给出合理的程序注释及运行结果)
实验一
1)程序清单及注释
importjava.util.*;
importjava.awt.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.awt.event.*;
publicclassEx4_1extendsJFrameimplementsMenuListener,ActionListener
{
JMenuBarmnuNotepad=newJMenuBar();//创建菜单栏
JMenumnuExit=newJMenu("退出");//创建退出菜单
//创建Pup和Pdown两个面板
JPanelPup=newJPanel();
JPanelPdown=newJPanel();
JPanelPmain=newJPanel();
JButtona1,a2,n1,n2,n3,n4,n5,n6,n7,n8,n9,n0,Oper1,Oper2,Oper3,Oper4,Oper5,Clear;
JTextFieldshow,result;
booleantem=true;//标识0
intcache=0;//存储器
booleanplus=false;//标识加
booleansubtract=false;//标识减
booleanmul=false;//标识乘
booleandiv=false;//标识除
Ex4_1()
{
setLayout(null);
//将菜单栏添加到容器中
setJMenuBar(mnuNotepad);
setTitle("计算器");//设置窗口标题
//为菜单项添加MenuListener侦听器
mnuExit.addMenuListener(this);
//为菜单项添加ActionListener侦听器
mnuExit.addActionListener(this);
//菜单添加到菜单栏
mnuNotepad.add(mnuExit);
Pup.setLayout(newFlowLayout());//pup面板是流布局
a1=newJButton("提示");
a2=newJButton("退出");
show=newJTextField("",17);
Pup.add(a1);
Pup.add(a2);
Pup.add(show);
a1.addActionListener(this);
a2.addActionListener(this);
show.setEditable(false);
show.setBackground(Color.WHITE);
Pmain.setLayout(newGridLayout(2,1));//主面板是网格布局
Pmain.add(Pup);
Pmain.add(Pdown);
setContentPane(Pmain);
Pdown.setLayout(null);
result=newJTextField("",20);
result.setEditable(false);
result.setBackground(Color.WHITE);
result.setHorizontalAlignment(JTextField.RIGHT);
//0-9十个数字
n1=newJButton("1");
n2=newJButton("2");
n3=newJButton("3");
n4=newJButton("4");
n5=newJButton("5");
n6=newJButton("6");
n7=newJButton("7");
n8=newJButton("8");
n9=newJButton("9");
n0=newJButton("0");
//+-*/=符号
Oper1=newJButton("+");
Oper2=newJButton("-");
Oper3=newJButton("*");
Oper4=newJButton("/");
Oper5=newJButton("=");
Clear=newJButton("AC");
Pdown.add(result);//将result文本框添加到Pdown面板中
//在Pdown面板中添加按钮
Pdown.add(Clear);
Pdown.add(Oper5);
Pdown.add(Oper4);
Pdown.add(Oper3);
Pdown.add(Oper2);
Pdown.add(Oper1);
Pdown.add(n0);
Pdown.add(n9);
Pdown.add(n8);
Pdown.add(n7);
Pdown.add(n6);
Pdown.add(n5);
Pdown.add(n4);
Pdown.add(n3);
Pdown.add(n2);
Pdown.add(n1);
//确定文本框和按钮的位置
result.setBounds(100,0,200,30);
n1.setBounds(85,50,50,30);
n2.setBounds(145,50,50,30);
n3.setBounds(205,50,50,30);
n4.setBounds(265,50,50,30);
n5.setBounds(85,100,50,30);
n6.setBounds(145,100,50,30);
n7.setBounds(205,100,50,30);
n8.setBounds(265,100,50,30);
n9.setBounds(85,150,50,30);
n0.setBounds(145,150,50,30);
Oper4.setBounds(205,150,50,30);
Oper3.setBounds(265,150,50,30);
Oper5.setBounds(85,200,50,30);
Oper2.setBounds(145,200,50,30);
Oper1.setBounds(205,200,50,30);
Clear.setBounds(265,200,50,30);
result.addActionListener(this);//为result文本框添加ActionListener侦听器
//为计算器中按钮添加ActionListener侦听器
Clear.addActionListener(this);
Oper5.addActionListener(this);
Oper4.addActionListener(this);
Oper3.addActionListener(this);
Oper2.addActionListener(this);
Oper1.addActionListener(this);
n0.addActionListener(this);
n9.addActionListener(this);
n8.addActionListener(this);
n7.addActionListener(this);
n6.addActionListener(this);
n5.addActionListener(this);
n4.addActionListener(this);
n3.addActionListener(this);
n2.addActionListener(this);
n1.addActionListener(this);
setSize(400,600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
//实现MenuListener侦听器接口的三个方法
publicvoidmenuDeselected(MenuEvente){}
publicvoidmenuCanceled(MenuEvente){}
publicvoidmenuSelected(MenuEvente){
if(e.getSource()==mnuExit)
System.exit(0);
}
//实现ActionListener侦听器接口的一个方法
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==a1)
show.setText("网工1101");
if(e.getSource()==a2)
System.exit(0);
if(e.getSource()==n1){
if(tem==false)
result.setText(result.getText()+"1");
else{
result.setText("1");
tem=false;
}
}
if(e.getSource()==n2){
if(tem==false)
result.setText(result.getText()+"2");
else{
result.setText("2");
tem=false;
}
}
if(e.getSource()==n3){
if(tem==false)
result.setText(result.getText()+"3");
else{
result.setText("3");
tem=false;
}
}
if(e.getSource()==n4){
if(tem==false)
result.setText(result.getText()+"4");
else{
result.setText("4");
tem=false;
}
}
if(e.getSource()==n5){
if(tem==false)
result.setText(result.getText()+"5");
else{
result.setText("5");
tem=false;
}
}
if(e.getSource()==n6){
if(tem==false)
result.setText(result.getText()+"6");
else{
result.setText("6");
tem=false;
}
}
if(e.getSource()==n7){
if(tem==false)
result.setText(result.getText()+"7");
else{
result.setText("7");
tem=false;
}
}
if(e.getSource()==n8){
if(tem==false)
result.setText(result.getText()+"8");
else{
result.setText("8");
tem=false;
}
}
if(e.getSource()==n9){
if(tem==false)
result.setText(result.getText()+"9");
else{
result.setText("9");
tem=false;
}
}
if(e.getSource()==n0){
if(tem==false)
result.setText(result.getText()+"0");
else{
result.setText("0");
tem=false;
}
}
//清空
if(e.getSource()==Clear){
result.setText("0");
cache=0;
tem=true;
plus=false;
subtract=false;
mul=false;
div=false;
}
//处理加法
if(e.getSource()==Oper1){
if(tem==false&&plus==false&&subtract==false&&mul==false&&div==false){
result.setText(result.getText()+"+");
plus=true;
}
}
//处理减法
if(e.getSource()==Oper2){
if(tem==false&&plus==false&&subtract==false&&mul==false&&div==false){
result.setText(result.getText()+"-");
subtract=true;
}
}
//处理乘法
if(e.getSource()==Oper3){
if(tem==false&&plus==false&&subtract==false&&mul==false&&div==false){
result.setText(result.getText()+"*");
mul=true;
}
}
//处理除法
if(e.getSource()==Oper1){
if(tem==false&&plus==false&&subtract==false&&mul==false&&div==false){
result.setText(result.getText()+"/");
div=true;
}
}
//等于
if(e.getSource()==Oper5){
if(plus==true){
inti=result.getText().indexOf("+");
Stringsubstr1=result.getText().substring(0,i);
Stringsubstr2=result.getText().substring(i+1,result.getText().length());
if(substr2.length()==0){
result.setText(""+substr1+"");
}
else{
doublere=Double.parseDouble(substr1)+Integer.parseInt(substr2);
result.setText(""+re+"");
}
plus=false;
tem=true;
}
if(subtract==true){
inti=result.getText().indexOf("-");
Stringsubstr1=result.getText().substring(0,i);
Stringsubstr2=result.getText().substring(i+1,result.getText().length());
if(substr2.length()==0){
result.setText(""+substr1+"");
}
else{
doublere=Double.parseDouble(substr1)-Integer.parseInt(substr2);
result.setText(""+re+"");
}
subtract=false;
tem=true;
}
if(mul==true){
inti=result.getText().indexOf("*");
Stringsubstr1=result.getText().substring(0,i);
Stringsubstr2=result.getText().substring(i+1,result.getText().length());
if(substr2.length()==0){
result.setText(""+substr1+"");
}
else{
doublere=Double.parseDouble(substr1)*Integer.parseInt(substr2);
result.setText(""+re+"");
}
mul=false;
tem=true;
}
if(div==true){
inti=result.getText().indexOf("/");
Stringsubstr1=result.getText().substring(0,i);
Stringsubstr2=result.getText().substring(i+1,result.getText().length());
if(substr2.length()==0){
result.setText(""+substr1+"");
}
elseif(Double.parseDouble(substr2)==0){
result.setText("除数不能为零");
}
else{
doublere=Double.parseDouble(substr1)/Double.parseDouble(substr2);
result.setText(""+re+"");
}
div=false;
tem=true;
}
}
}
publicstaticvoidmain(String[]args)
{
newEx4_1();
}
}
2)程序运行结果
提示
计算器
实验二
1)程序清单及注释
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassEx4_2extendsJFrameimplementsItemListener{
//创建按钮
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 图形 用户界面 设计