JAVA图形界面设计二Word下载.docx
《JAVA图形界面设计二Word下载.docx》由会员分享,可在线阅读,更多相关《JAVA图形界面设计二Word下载.docx(36页珍藏版)》请在冰豆网上搜索。
![JAVA图形界面设计二Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/e141d9a9-48c4-4ab8-a1bc-7a328b22f97d/e141d9a9-48c4-4ab8-a1bc-7a328b22f97d1.gif)
box3=newJCheckbox("
蓝球"
add(box1);
add(box2);
add(box3);
}
}
6.1.2单选框
当在一个容器中放入多个选择框,且没有用ButtonGroup对象将它们分组,则可以同时选中多个选择框。
如果使用ButtonGroup对象将选择框分组,同一时刻组内的多个选择框只允许有一个被选中,称同一组内的选择框为单选框。
单选框分组的方法是先创建ButtonGroup对象,然后将希望为同组的选择框添加到同一个ButtonGroup对象中。
参见例6.2程序的面板子类Panel2的声明,组内有3个单选框。
6.1.3单选按钮
单选按钮(JRadioButton)的功能与单选框相似。
使用单选按钮的方法是将一些单选按钮用ButtonGroup对象分组,使同一组内的单选按钮只允许一个被选中。
单选按钮与单选框的差异是显示的样式不同,单选按钮是一个圆形的按钮,单选框是一个小方框。
JRadioButton类的常用构造方法有以下几个:
(1)JRadioButton(),用空标题构造单选按钮。
(2)JRadioButton(Strings),用标题s构造单选按钮。
(3)JRadioButton(Strings,booleanb),用标题s构造单选按钮,参数b设置选中是否的初始状态。
单选按钮使用时需要使用ButtonGroup将单选按钮分组,单选按钮分组的方法是先创建ButtonGroup对象,然后将同组的单选按钮添加到同一个ButtonGroup对象中。
参见例6.2程序的面板子类Panel1的声明,组内有3个单选按钮。
6.1.4选择项目事件处理
用户对选择框或单选按钮做出选择后,程序应对这个选择作出必要的相应,程序为此要处理选择项目事件。
选择项目事件处理程序的基本内容有:
监视选择项目单选的类要实现接口ItemListener,程序要声明和建立选择对象,为选择对象注册监视器,编写处理选择项目事件的接口方法itemStateChanged(ItemEvente),在该方法内用getItemSelectable()方法获取事件源,并作相应处理。
【例6.2】处理选择项目事件的小应用程序。
一个由3个单选按钮组成的产品选择组,当选中某个产品时,文本区将显示该产品的信息。
另有一个由3个选择框组成的购买产品数量选择框组,当选择了购买数量后,在另一个文本框显示每台价格。
importjava.applet.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
classPanel1extendsPanel{
JRadioButtonbox1,box2,box3;
ButtonGroupg;
setLayout(newGridLayout());
g=newButtonGroup();
box1=newJRadioButton(MyWindow.fName[0]+"
计算机"
false);
box2=newJRadioButton(MyWindow.fName[1]+"
box3=newJRadioButton(MyWindow.fName[2]+"
g.add(box1);
g.add(box2);
g.add(box3);
add(newJLabel("
计算机3选1"
));
classPanel2extendsPanel{
JCheckBoxbox1,box2,box3;
Panel2(){
setLayout(newGridLayout(1,3));
box1=newJCheckBox("
购买1台"
box2=newJCheckBox("
购买2台"
box3=newJCheckBox("
购买3台"
选择1、2或3"
classMyWindowextendsJFrameimplementsItemListener{
Panel1panel1;
Panel2panel2;
JLabellabel1,label2;
JTextAreatext1,text2;
staticStringfName[]={"
HP"
"
IBM"
DEL"
};
staticdoublepriTbl[][]={{1.20,1.15,1.10},{1.70,1.65,1.60},{1.65,1.60,1.58}};
staticintproduction=-1;
publicMyWindow(Strings){
super(s);
Containercon=this.getContentPane();
con.setLayout(newGridLayout(3,2));
this.setLocation(100,100);
this.setSize(400,100);
panel1=newPanel1();
panel2=newPanel2();
label1=newJLabel("
产品介绍"
JLabel.CENTER);
label2=newJLabel("
产品价格"
text1=newJTextArea();
text2=newJTextArea();
con.add(label1);
con.add(label2);
con.add(panel1);
con.add(panel2);
con.add(text1);
con.add(text2);
panel1.box1.addItemListener(this);
panel1.box2.addItemListener(this);
panel1.box3.addItemListener(this);
panel2.box1.addItemListener(this);
panel2.box2.addItemListener(this);
panel2.box3.addItemListener(this);
this.setVisible(true);
this.pack();
publicvoiditemStateChanged(ItemEvente){
if(e.getItemSelectable()==panel1.box1){
production=0;
text1.setText(fName[0]+"
公司生产"
text2.setText("
"
}elseif(e.getItemSelectable()==panel1.box2){
production=1;
text1.setText(fName[1]+"
}elseif(e.getItemSelectable()==panel1.box3){
production=2;
text1.setText(fName[2]+"
}else{
if(production==-1)return;
if(e.getItemSelectable()==panel2.box1){
text2.setText("
"
+priTbl[production][0]+"
万元/台"
}elseif(e.getItemSelectable()==panel2.box2){
+priTbl[production][1]+"
}elseif(e.getItemSelectable()==panel2.box3){
+priTbl[production][2]+"
}
}
publicclassExample6_2extendsApplet{
MyWindowmyWin=newMyWindow("
选择项目处理示例程序"
6.2列表和组合框
列表和组合框是又一类供用户程序的界面组件,用于在一组选择项目中选择,组合框还可以输入新的选择。
6.2.1列表
列表(JList)在界面中表现为列表框,是JList类或它的子类的对象。
程序可以在列表框中加入多个文本选项条目。
列表事件的事件源有两种:
一是鼠标双击某个选项,二是鼠标单击某个选项。
双击选项是动作事件,与该事件相关的接口是ActionListener,注册监视器的方法是addActionListener(),接口方法是actionPerformed(ActionEvente)。
单击方法是选项事件,与选项事件相关的接口是ListSelectionListener,注册监视器的方法是addListSelectionListener,接口方法是valueChanged(ListSelectionEvente)。
JList类的常用构造方法:
(1)JList(),建立一个列表。
(2)JList(String[]list),建立列表,list是字符串数组,数组元素是列表的选择条目。
JList类的其他常用方法:
(1)getSelectedIndex(),获取选项的索引。
(2)getSelectedValue(),获取选项的值。
(3)getItemCount(),获取列表中的选项条数。
(4)setVisibleRowCount(intn),设置列表可见行数。
(5)setSelectedMode(intseleMode),设置列表选择模型。
选择模型有单选和多项两种。
单选:
ListSelectionModel.SINGLE_SELECTION。
多项:
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION。
(6)remove(intn),从列表中的选项菜单中删除指定索引的选项。
(7)removeAll(),删除列表中的全部选项。
列表可以添加滚动条,列表添加滚动条的方法是先创建列表,然后再创建一个JScrollPane滚动面板对象,在创建滚动面板对象时指定列表。
以下代码示意为列表list2添加滚动条:
JScrollPanejsp=newJScrollPane(list2);
//为列表加滚动条
【例6.3】小应用程序有两个列表,第一个列表只允许单选,第二个列表允许多选。
importjavax.swing.event.*;
classMyWindowextendsJFrameimplementsListSelectionListener{
JListlist1,list2;
Stringnews[]={"
人民日报"
新民晚报"
浙江日报"
文汇报"
Stringsports[]={"
乒乓球"
篮球"
JTextAreatext;
MyWindow(Strings){
Containercon=getContentPane();
con.setBackground(Color.BLUE);
con.setLayout(newGridLayout(2,2));
con.setSize(200,50);
list1=newJList(news);
list1.setVisibleRowCount(3);
list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list1.addListSelectionListener(this);
list2=newJList(sports);
list2.setVisibleRowCount
(2);
list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
list2.addListSelectionListener(this);
con.add(list1);
con.add(list2);
text=newJTextArea(10,20);
con.add(text);
publicvoidvalueChanged(ListSelectionEvente){
if(e.getSource()==list1){
text.setText(null);
ObjectlistValue=((JList)e.getSource()).getSelectedValue();
StringseleName=listValue.toString();
for(inti=0;
i<
news.length;
i++)
if(news[i].equals(seleName)){
text.append(seleName+"
:
被选中\n"
}elseif(e.getSource()==list2){
inttempList[]=list2.getSelectedIndices();
tempList.length;
text.append(tempList[i]+"
publicclassExample6_3extendsApplet{
列表示例"
6.2.2组合框
组合框(JComboBox)是文本框和列表的组合,可以在文本框中输入选项,也可以单击下拉按钮从显示的列表中进行选择。
组合框的常用构造方法有以下几个:
(1)JComboBox(),建立一个没有选项的JComboBox对象。
(2)JComboBox(JcomboBoxModelaModel),用数据模型建立一个JComboBox对象。
(3)JComboBox(Object[]items),利用数组对象建立一个JComboBox对象。
组合框的其他常用方法有以下几个:
(1)addItem(Objectob),向组合框加入选项。
(2)getItemCount(),获取组合框的条目总数。
(3)removeItem(Objectob),删除指定选项。
(4)removeItemAt(intindex),删除指定索引的选项。
(5)insertItemIndex(Objectob,intindex),在指定的索引处插入选项。
(6)getSelectedIndex(),获取所选项的索引值(从0开始)。
(7)getSelectedItem(),获取所选项的内容。
(8)setEditable(booleanb),设为可编辑。
组合框的默认状态是不可编辑的,需要调用本方法设定为可编辑,才能相应选择输入事件。
在JComboBox对象上发生的事件分为两类:
一是用户选定项目,事件响应程序获取用户所选的项目。
二是用户输入项目后按回车键,事件响应程序读取用户的输入。
第一类事件的接口是ItemListener;
第二类是输入事件,接口是ActionListener。
【例6.4】一个说明组合框用法的应用程序。
程序中声明的组合框子类实现ItemListener接口和ActionListener接口。
组合框子类的窗口中设置了一个文本框和一个组合框,组合框中有三个选择。
实现接口的监视方法将组合框的选择结果在文本框中显示。
publicclassExample6_4{
publicstaticvoidmain(Stringargs[]){
ComboBoxDemo1myComboBoxGUI=newComboBoxDemo1();
classComboBoxDemo1extendsJFrameimplementsActionListener,ItemListener{
publicstaticfinalintWidth=350;
publicstaticfinalintHeight=350;
StringproList[]={"
踢足球"
打篮球"
打排球"
JTextFieldtext;
JComboBoxcomboBox;
publicComboBoxDemo1(){
setSize(Width,Height);
setTitle("
组合框使用示意程序"
ContainerconPane=getContentPane();
conPane.setBackground(Color.BLUE);
conPane.setLayout(newFlowLayout());
comboBox=newJComboBox(proList);
comboBox.addActionListener(this);
comboBox.addItemListener(this);
comboBox.setEditable(true);
conPane.add(comboBox);
text=newJTextField(10);
conPane.add(text);
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==comboBox)
text.setText(comboBox.getSelectedItem().toString());
6.3菜单
有两种类型的菜单:
下拉式菜单和弹出式菜单。
本书只讨论下拉式菜单编程方式。
菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的。
菜单与JComboBox的相同之处是每次只可以选择一个项目。
在下拉式菜单或弹出式菜单中选择一个选项就产生一个ActionEvent事件。
该事件被发送给哪个选项的监视器,事件的意义由监视器解释。
6.3.1菜单条、菜单和菜单项
下拉式菜单通过出现在菜单条上的名字来可视化表示,菜单条(JmenuBar)通常出现在JFrame的顶部,一个菜单条显示多个下拉式菜单的名字。
可以用两种方式来激活下拉式菜单。
一种是按下鼠标的按钮,并保持按下状态,移动鼠标,直到释放鼠标完成选择,高亮度显示的菜单项即为所选择的。
另一种方式是当光标位于菜单条中的菜单名上时,点击鼠标。
在这种情况下,菜单会展开,且高亮度显示菜单项。
一个菜单条可以放多个菜单(JMenu),每个菜单又可以有许多菜单项(JMenuItem)。
例如,Eclipse环境的菜单条有File、Edit、Source、Refactor等菜单,每个菜单又有许多菜单项。
例如,File菜单有New、OpenFile、Close、CloseAll等菜单项。
向窗口增设菜单的方法是:
先创建一个菜单条对象,然后再创建若干菜单对象,把这些菜单对象放在菜单条里,再按要求为每个菜单对象添加菜单项。
菜单中的菜单项也可以是一个完整的菜单。
由于菜单项又可以是另一个完整菜单,因此可以构造一个层次状菜单结构。
1.菜单条
类JMenubar的实例就是菜单条。
例如,以下代码创建菜单条对象menubar:
J