实验四.docx
《实验四.docx》由会员分享,可在线阅读,更多相关《实验四.docx(13页珍藏版)》请在冰豆网上搜索。
实验四
实验四图形用户界面的设计
云南大学信息学院面向对象技术导论java程序设计大学教程实验
【开发语言及实现平台或实验环境】
Windows2000或XP,JDK1.6与Jcreator4.0
【实验目的】
1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法
2.了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。
【实验要求】
1.掌握在容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。
2.理解Java的事件处理机制,掌握为不同组件编写事件处理程序的方法。
3.掌握编写独立运行的窗口界面的方法。
4.了解JavaSwing组件的使用方法。
5.了解对话框的使用方法。
【实验内容】
一、进制转换
程序功能:
在窗口中创建单选框、文本区域、单行文本框等组件,并实现根据用户输入的10进制数,选择不同选项可转换为2、8、16进制数。
实验代码:
packagebao;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassTransextendsJFrameimplementsActionListener{
ButtonGroupbg;
JTextFieldtx1;
JRadioButtonr1,r2,r3,r4;
JTextAreajta=newJTextArea(6,25);
intop=0;
publicTrans()
{
super("进制转换");
this.setSize(300,300);
setLayout(newFlowLayout());
add(newJLabel("输入10进制数"));
tx1=newJTextField("",6);
add(tx1);
add(jta);
add(newJLabel("请选择进制:
"));
r1=newJRadioButton("");
r1.addActionListener(this);
r2=newJRadioButton("");
r2.addActionListener(this);
r3=newJRadioButton("");
r3.addActionListener(this);
r4=newJRadioButton("");
r4.addActionListener(this);
add(r1);
add(newJLabel("2进制"));
add(r2);
add(newJLabel("8进制"));
add(r3);
add(newJLabel("16进制"));
add(r4);
add(newJLabel("10进制"));
bg=newButtonGroup();
bg.add(r1);
bg.add(r2);
bg.add(r3);
bg.add(r4);
this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==r1)op=1;
if(e.getSource()==r2)op=2;
if(e.getSource()==r3)op=3;
if(e.getSource()==r4)op=4;
inta=Integer.parseInt(tx1.getText());
switch(op)
{
case1:
jta.append("2进制值为"+Integer.toBinaryString(a)+"\n");
break;
case2:
jta.append("8进制值为"+Integer.toOctalString(a)+"\n");
break;
case3:
jta.append("16进制值为"+Integer.toHexString(a)+"\n");
break;
case4:
jta.append("10进制值为"+a+"\n");
break;
default:
jta.append("请选择运算符");
}
}
publicstaticvoidmain(Stringargs[])
{
newTrans();
}
}
程序结果:
二、简单计算器
程序功能:
在窗口中输入操作数1和操作数2,选择加减乘除中的一种运算,点击“计算”按钮,得到结果。
实验代码:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclasssimpleCalculatorextendsJFrameimplementsActionListener,ItemListener
{
ButtonGroupbg;
JLabella1;
JRadioButtona1,a2,a3,a4;
JTextFieldtf1,tf2;
JButtonb1;
intop=0;
publicsimpleCalculator()
{
setTitle("简单计算器");
setSize(200,180);
setLayout(newFlowLayout());
add(newJLabel("操作数1"));
tf1=newJTextField("",9);
add(tf1);
a1=newJRadioButton("+");add(a1);
a2=newJRadioButton("-");add(a2);
a3=newJRadioButton("×");add(a3);
a4=newJRadioButton("÷");add(a4);
bg=newButtonGroup();
bg.add(a1);
bg.add(a2);
bg.add(a3);
bg.add(a4);
add(newJLabel("操作数2"));
tf2=newJTextField("",9);
add(tf2);
a1.addItemListener(this);
a2.addItemListener(this);
a3.addItemListener(this);
a4.addItemListener(this);
b1=newJButton("计算");
add(b1);
b1.addActionListener(this);
la1=newJLabel("");
add(la1);
setVisible(true);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEventevt){
System.exit(0);
}
});
}
publicvoiditemStateChanged(ItemEvente)
{
if(e.getSource()==a1)op=1;
if(e.getSource()==a2)op=2;
if(e.getSource()==a3)op=3;
if(e.getSource()==a4)op=4;
}
publicvoidactionPerformed(ActionEvente)
{
doublem=Double.parseDouble(tf1.getText());
doublen=Double.parseDouble(tf2.getText());
doublek;
if(op==0)la1.setText("请选择运算符");
if(op==1){
k=m+n;
la1.setText(""+k);
}
if(op==2)
{
k=m-n;
la1.setText(""+k);
}
if(op==3){
k=m*n;
la1.setText(""+k);
}
if(op==4){
k=m/n;
la1.setText(""+k);
}
}
publicstaticvoidmain(Stringargs[])
{
newsimpleCalculator();
}
}
运行结果:
三、键盘鼠标响应
程序功能:
在窗口中用鼠标左键和右键单击时,窗口下方显示哪个键被点击,坐标是多少;当键盘上某个键被点击时,窗口下方显示这个键的名称。
实验代码:
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassmouseAndKeyboardEventDemoextendsJFrameimplementsMouseListener{
JLabels1;
JFrameframe;
publicmouseAndKeyboardEventDemo(){
frame=newJFrame();
s1=newJLabel();
frame.setTitle("键盘鼠标响应");
frame.setSize(320,320);
frame.setVisible(true);
frame.addMouseListener(this);
frame.add("South",s1);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidmousePressed(MouseEvente){}
publicvoidmouseReleased(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmouseClicked(MouseEvente){
switch(e.getButton())
{
case1:
s1.setText("左键被点击,坐标("+e.getX()+","+e.getY()+")");
break;
case2:
s1.setText("滑轮被点击,坐标("+e.getX()+","+e.getY()+")");
break;
case3:
s1.setText("右键被点击,坐标("+e.getX()+","+e.getY()+")");
break;
}
}
publicstaticvoidmain(String[]args){
newmouseAndKeyboardEventDemo();
}
}
实验结果: