一、实验目的
通过swing和awt用Java语言写一个个人简历的图形用户界面。并使用合适的监听器和组件,完成单选框和复选框的功能。并能够在选择单选框时将结果显示在文本框中具体内容如下:
(1)掌握图形用户界面基本组件。
(2)了解如何使用布局管理器对组件进行管理。
(3)掌握Java事件处理机制。
二、实验原理
图形用户 界面 (Graphical User Interface,简称 GUI,又称图形 用户接口 )是指采用图形方式显示的计算机操作用户 界面 。图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。. 与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。. 图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。
一个Java GUI通常由顶层容器、中间容器以及多个原子组件组成。每个原子组件或容器都可能触发相应事件的产生。容器是一类能够在其中容纳其他组件的特殊组件。Swing的GUI组件类是按照类属层次以树状结构进行组织的。在这个树的最顶层,即树的根部,使一个最基本的容器类,被称为顶层容器。Swing 提供了三个通用的顶层容器类JFrame,JDialog和JApplet。JFrame提供了基于窗体的应用程序,JDialog提供对话框形式的界面,JApplet提供Java小应用程序的界面形式。在顶层容器下是中间容器,用于容纳其他的组件。通常窗格本身在显示界面中是看不到的。面板类Panel是一种中间容器,它的唯一作用是使组件更容易定位。顶层容器通过getContentPane()方法获取内部的一个内容窗格。
三、实验步骤、数据记录及处理
1.程序源码:
package Test1;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
import javax.swing.border.Border;
public class Project2 implements ItemListener{
public static void main(String[] args){
JFrame jf=new JFrame("个人简历");
JTextArea jt=new JTextArea("选择");
JRadioButton b1= new JRadioButton("男");
JRadioButton b2= new JRadioButton("女");
JLabel jb1=new JLabel("性别");
JLabel jb2=new JLabel("爱好");
JCheckBox a1=new JCheckBox("唱歌");
JCheckBox a2=new JCheckBox("跳舞");
JCheckBox a3=new JCheckBox("编程");
JCheckBox a4=new JCheckBox("打游戏");
JCheckBox a5=new JCheckBox("游泳");
JCheckBox a6=new JCheckBox("跑步");
JTextField c1=new JTextField("姓名:");
JTextField c2 = new JTextField(8);c1.setEditable(false);
JTextField c3=new JTextField("年龄");
JTextField c4=new JTextField(8);c3.setEditable(false);
JTextField c5=new JTextField("民族");
JTextField c6=new JTextField(8);c5.setEditable(false);
JPanel jp1=new JPanel();
jp1.add(c1);
jp1.add(c2);
jp1.add(c3);
jp1.add(c4);
jp1.add(c5);
jp1.add(c6);
jp1.add(jb1);
ButtonGroup bg=new ButtonGroup();
bg.add(b1);
bg.add(b2);
jp1.add(b1);
jp1.add(b2);
jp1.add(jb2);
jp1.add(a1);
jp1.add(a2);
jp1.add(a3);
jp1.add(a4);
jp1.add(a5);
jp1.add(a6);
JPanel jp2 = new JPanel();
jp2.setLayout(new GridLayout(0,1));
jp2.add(jt);
Border etched = BorderFactory.createEtchedBorder();
Border border = BorderFactory.createTitledBorder(etched, "FlowLayout Panel");
border = BorderFactory.createTitledBorder(etched, "选择结果");
jp2.setBorder(border);
Container cp = jf.getContentPane();
cp.setLayout(new GridLayout(0,1));
cp.add(jp1);
cp.add(jp2);
ItemListener i1 = new ItemListener ()
{ public void itemStateChanged(ItemEvent e)
{ JRadioButton rb = (JRadioButton) e.getSource();
if (rb==b1)
{jt.append("\n"+"您选择了"+b1.getActionCommand()+b1.isSelected());}
if(rb==b2) { jt.append("\n"+"您选择了"+b2.getActionCommand()+b2.isSelected());
}
}
};
b1.addItemListener(i1);
b2.addItemListener(i1);
ItemListener i2 = new ItemListener ()
{ public void itemStateChanged(ItemEvent e)
{ JCheckBox rb1 = (JCheckBox) e.getSource();
if (rb1 == a1)
{ jt.append("\n"+a1.getActionCommand()+ a1.isSelected());
} else if (rb1 == a2)
{ jt.append("\n"+a2.getActionCommand()+ a2.isSelected());
} else if (rb1 == a3)
{ jt.append("\n"+a3.getActionCommand()+ a3.isSelected());
} else if (rb1 == a4)
{ jt.append("\n"+a4.getActionCommand()+ a4.isSelected());
} else if (rb1 == a5)
{ jt.append("\n"+a5.getActionCommand()+ a5.isSelected());
} else if(rb1==a6)
{ jt.append("\n"+a6.getActionCommand()+ a6.isSelected());
}
}
};
a1.addItemListener(i2);
a2.addItemListener(i2);
a3.addItemListener(i2);
a4.addItemListener(i2);
a5.addItemListener(i2);
a6.addItemListener(i2);
jf.setVisible(true);
jf.setSize(500,450);
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
}
图 1个人简历界面
2.功能实现:
- 姓名、年龄、民族可以输入个人信息。
- 性别单选框选择下方文本框会显示选择的项目
- 复选框爱好选择会在下方文本区域中显示。
- 主要实现方式:
- 单选框的实现:
JRadioButton b1= new JRadioButton("男");
JRadioButton b2= new JRadioButton("女");
ButtonGroup bg=new ButtonGroup ( );
bg.add(b1);
bg.add(b2);
jp1.add(b1);
jp1.add(b2);
将b1、b2 放在buttongroup里实现单选的效果。
- 复选框的实现:
JLabel jb2=new JLabel("爱好");
JCheckBox a1=new JCheckBox("唱歌");
JCheckBox a2=new JCheckBox("跳舞");
JCheckBox a3=new JCheckBox("编程");
JCheckBox a4=new JCheckBox("打游戏");
JCheckBox a5=new JCheckBox("游泳");
JCheckBox a6=new JCheckBox("跑步");
将a1,a2,a3,a4,a5,a6六个复选框的选项放到JcheckBox里实现复选框的功能。
- 实现选择单选框和复选框可在下方文本区显示的功能。
ItemListener i1 = new ItemListener ()
{ public void itemStateChanged(ItemEvent e)
{ JRadioButton rb = (JRadioButton) e.getSource();
if (rb==b1)
{jt.append("\n"+"您选择了"+b1.getActionCommand()+b1.isSelected());}
if(rb==b2) { jt.append("\n"+"您选择了"+b2.getActionCommand()+b2.isSelected());
}
}
};
b1.addItemListener(i1);
b2.addItemListener(i1);
用事件监听来监听选择的项目,实现选择男或女可以在下方文本区显示
ItemListener i2 = new ItemListener ()
{ public void itemStateChanged(ItemEvent e)
{ JCheckBox rb1 = (JCheckBox) e.getSource();
if (rb1 == a1)
{ jt.append("\n"+a1.getActionCommand()+ a1.isSelected());
} else if (rb1 == a2)
{ jt.append("\n"+a2.getActionCommand()+ a2.isSelected());
} else if (rb1 == a3)
{ jt.append("\n"+a3.getActionCommand()+ a3.isSelected());
} else if (rb1 == a4)
{ jt.append("\n"+a4.getActionCommand()+ a4.isSelected());
} else if (rb1 == a5)
{ jt.append("\n"+a5.getActionCommand()+ a5.isSelected());
} else if(rb1==a6)
{ jt.append("\n"+a6.getActionCommand()+ a6.isSelected());
}
}
};
a1.addItemListener(i2);
a2.addItemListener(i2);
a3.addItemListener(i2);
a4.addItemListener(i2);
a5.addItemListener(i2);
a6.addItemListener(i2);
复选框同样使用itemListener监听器实现监听,将复选选中的项目显示在下方文本区里