📄 java入门(9) java与gui.htm
字号:
<BR>panel1.add(setbeep); <BR>panel1.add(setcounter); <BR>colorSel=new
CheckboxGroup(); <BR>red=new Checkbox("Set red",colorSel,true);
<BR>green=new Checkbox("Set green",colorSel,false); <BR>blue=new
Checkbox("Set blue",colorSel,false); <BR>panel1.add(red);
<BR>panel1.add(green); <BR>panel1.add(blue); <BR>red.addItemListener(new
ItemListener() <BR>{ <BR>public void itemStateChanged(ItemEvent evt) <BR>{
<BR>if(evt.getStateChange()==ItemEvent.SELECTED)
<BR>button1.setForeground(Color.red); <BR>} <BR>});
<BR>green.addItemListener(new ItemListener() <BR>{ <BR>public void
itemStateChanged(ItemEvent evt) <BR>{
<BR>if(evt.getStateChange()==ItemEvent.SELECTED)
<BR>button1.setForeground(Color.green); <BR>} <BR>});
<BR>blue.addItemListener(new ItemListener() <BR>{ <BR>public void
itemStateChanged(ItemEvent evt) <BR>{
<BR>if(evt.getStateChange()==ItemEvent.SELECTED)
<BR>button1.setForeground(Color.blue); <BR>} <BR>}); <BR>button1=new
JButton("Press me"); <BR>panel1.add(button1);
<BR>button1.addActionListener(new ActionListener() <BR>{ <BR>public void
actionPerformed(ActionEvent evt) <BR>{ <BR>doButton1Action(); <BR>}
<BR>}); <BR>} <BR>public void doButton1Action() <BR>{ <BR>if
(setbeep.getState()) <BR>Toolkit.getDefaultToolkit().beep(); <BR>if
(setcounter.getState()) <BR>button1.setText("press:
"+String.valueOf(++counter)); <BR>else <BR>button1.setText("Press me");
<BR>} <BR>} <BR><BR><BR><BR> 2.使用javac编译这个程序,然后编辑一个显示这个Java Applet的页面:
<BR><BR> 源程序:useCheckbox.html <BR><BR><BR><html><body>
<BR><applet code="useCheckbox.class" width=320 height=150>
<BR></applet> <BR></body></html>
<BR><BR><BR><BR> 4.最后使用appletviewer来运行这个程序,这个程序的输出如下图所示:
<BR><BR><BR> 图9-5 程序useCheckbox的运行结果 <BR><BR> 传授新知
<BR><BR> 从我们学习Java开始,这个示例程序是大家遇到的最长的一个。大家不要被它吓退,这个程序阅读起来一样并不困难。下面,我们就对程序做一些点评。
<BR><BR> 1) <BR><BR><BR>setbeep=new Checkbox("Beep when press button");
<BR>setcounter=new Checkbox("Counter press time");
<BR>panel1.add(setbeep); <BR>panel1.add(setcounter);
<BR><BR><BR><BR> 在这一段程序中,我们定义了两个Checkbox:setbeep和setcounter。什么是Checkbox呢?如下图所示:
<BR><BR><BR> 图9-6 复选框
<BR><BR> 在Java语言中,Checkbox类定义了复选框。复选框用来让用户做出某种选择,正如上图所示,允许选中多个复选框。
<BR><BR> 在前两句中,我们使用new创建了这两个复选框;而在后两句中,我们使用容器Panel的add方法将它们装入Panel。
<BR><BR> 2) <BR><BR><BR>colorSel=new CheckboxGroup(); <BR>red=new
Checkbox("Set red",colorSel,true); <BR>green=new Checkbox("Set
green",colorSel,false); <BR>blue=new Checkbox("Set blue",colorSel,false);
<BR>panel1.add(red); <BR>panel1.add(green); <BR>panel1.add(blue);
<BR><BR><BR><BR> 而这一段程序则是用来定义red、green和blue三个单选按钮。在Java语言中,单选按钮被看作是一组特殊的复选框。我们使用一个CheckboxGroup将它们组成一个组,这样就只允许这个组里的“复选框”只能有一定被选中,这就形成了单选按钮。
<BR><BR> 单选按钮与复选框在外观上也不同:复选框是一个正方形的小框,而单选按钮则是一个小小的圆,如下图所示:
<BR><BR><BR> 图9-7 单选按钮
<BR><BR> 在上面的程序中,我们首先定义了一个组:colorSel。接下来的三条语句使用new操作符创建了三个Checkbox,并在参数列表中指定了它所在的组,其语法格式为:
<BR><BR> 单选按钮名=new Checkbox(“提示文本”,所在组名,初值);
<BR><BR> 其中初值是布尔型的:true表示选中,false表示未选中。 <BR><BR> 注意:
<BR><BR> 一组单选按钮中仅能有一个按钮的初值是true,因为是“单选”嘛。
<BR><BR> 最后,我们再次调用了panel的add方法,将它们装入容器panel中。 <BR><BR> 3)
<BR><BR><BR>red.addItemListener(new ItemListener() <BR>{ <BR>public void
itemStateChanged(ItemEvent evt) <BR>{
<BR>if(evt.getStateChange()==ItemEvent.SELECTED)
<BR>button1.setForeground(Color.red); <BR>} <BR>});
<BR><BR><BR><BR> 这段程序用到了许多我们没有遇到过的东西!不过不要紧,做为初学者还是要学会“黑盒子”学习方法,也就是在学习的初级阶段要将某些东西当作一个整体来接受,而不是每一个都要剖析清楚,那样就会影响学习效果的。正如这段程序,大家只要会用,会理解就行了,不一定要搞懂为什么这么写。
<BR><BR> 第一行中red.addItemListener用来为单选按钮red增加一个监测器。监测什么呢?第3行说明监测itemStateChanged(状态改变时)。第5行说明当监测到状态改变时,就判断改变后的状态是不是“选中”的。如果是,就执行第6行,将按钮button1的前景色设置为红色。
<BR><BR> 在后面的两段中,我们采用相同的方法为单选按钮green和blue分别创建了一个监测器,使得当其被“选中”时,就将按钮button1的前景色设置为相应的颜色(绿色和蓝色)。
<BR><BR> 4) <BR><BR><BR>button1.addActionListener(new ActionListener()
<BR>{ <BR>public void actionPerformed(ActionEvent evt) <BR>{
<BR>doButton1Action(); <BR>} <BR>});
<BR><BR><BR><BR> 这一段程序,我们在9.2小节中就遇到过。它是用来为按钮button1创建一个监测器。不同的是,当时我们是直接说明了当按钮按下时所要执行的语句。而在此,我们则是让其去执行一个doButton1Action方法。这个方法,是在我们后面的程序中定义的。
<BR><BR> 5) <BR><BR><BR>public void doButton1Action() <BR>{ <BR>if
(setbeep.getState()) <BR>Toolkit.getDefaultToolkit().beep(); <BR>if
(setcounter.getState()) <BR>button1.setText("press:
"+String.valueOf(++counter)); <BR>else <BR>button1.setText("Press me");
<BR>}
<BR><BR><BR><BR> 这就是当按下按钮button1时,执行的方法doButton1Action。整个方法可以分为两个部分的工作:
<BR><BR> 其一是: <BR><BR><BR>if (setbeep.getState())
<BR>Toolkit.getDefaultToolkit().beep();
<BR><BR><BR><BR> 即,首先判断复选框setbeep否被选中(使用复选框的getState方法获得其状态,如果被选中,返回true;如果未被选中,返回false)。如果被选中,就响铃。
<BR><BR> 把整个程序逻辑串起来讲就是:当按钮button1按下时,将检查复选框setbeep是否被选中,如果被先中,就响铃,否则无任何反应。
<BR><BR> 其二是: <BR><BR><BR>if (setcounter.getState())
<BR>button1.setText("press: "+String.valueOf(++counter)); <BR>else
<BR>button1.setText("Press me");
<BR><BR><BR><BR> 即,首先判断复选框setcounter是否被选中。如果被选中,则改变按钮button1的显示文本,将其改为press:按下总次数;否则,让其显示最初的“Press
me”。 <BR><BR> 自测练习 <BR><BR> 1) 在Java语言中,复选框类名是____________。
<BR><BR> a.Button b.Checkbox c.checkBox d.Label <BR><BR> 2)
在Java语言中,单选框类名是____________。 <BR><BR> a.Label b.checkBox c.Button
d.Checkbox <BR><BR> 3)
假设有cb1、cb2、cb3三个对象,属于同一个CheckboxGroup,则它们是________。 <BR><BR> a.单选按钮 b.复选框
<BR><BR> 4) 复选框的外观是________。 <BR><BR> a.一个小正方形 b.一个小圆形 c.一个小三角形
<BR><BR> 5) 单选框的外观是________。 <BR><BR> a.一个小正方形 b.一个小圆形 c.一个小三角形
<BR><BR> 6) 编写一段程序,使其运行结果如下图所示: <BR><BR><BR> 图9-8 练习903题图
<BR><BR> 并且,当选中了NO.1,则按钮显示为NO.1;选中了NO.2,则按钮显示为NO.2。
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> 练习答案 <BR><BR> 1)b 复选框类名为Checkbox,第一个字母“C”是大写字母。 <BR><BR> 2)d
单选按钮也是Checkbox,与复选框的不同是,单选按钮是属于一个CheckboxGroup的。 <BR><BR> 3)a
加入了同一个CheckboxGroup,就成为一组,一组中仅有一个能够被选中,称为单选按钮。 <BR><BR> 4)a 请参看图9-6。
<BR><BR> 5)b 请参看图9-7。 <BR><BR> 6)以下是一个实现实例: <BR><BR> 源程序:lianxi903.java
<BR><BR><BR>import javax.swing.*; <BR>import java.awt.*; <BR>import
java.awt.event.*; <BR>public class lianxi903 extends JApplet <BR>{
<BR>JButton button1; <BR>Checkbox theOne,theTwo; <BR>CheckboxGroup cbg1;
<BR>public void init() <BR>{ <BR>JPanel panel1=(JPanel)getContentPane();
<BR>panel1.setLayout(new FlowLayout()); <BR>cbg1=new CheckboxGroup();
<BR>theOne=new Checkbox("NO.1",cbg1,true); <BR>theTwo=new
Checkbox("NO.2",cbg1,false); <BR>button1=new JButton("Button");
<BR>panel1.add(theOne); <BR>panel1.add(theTwo); <BR>panel1.add(button1);
<BR>theOne.addItemListener(new ItemListener() <BR>{ <BR>public void
itemStateChanged(ItemEvent evt) <BR>{
<BR>if(evt.getStateChange()==ItemEvent.SELECTED)
<BR>button1.setText("NO.1"); <BR>} <BR>}); <BR>theTwo.addItemListener(new
ItemListener() <BR>{ <BR>public void itemStateChanged(ItemEvent evt) <BR>{
<BR>if(evt.getStateChange()==ItemEvent.SELECTED)
<BR>button1.setText("NO.2"); <BR>} <BR>}); <BR>} <BR>}
<BR><BR><BR><BR> 9.5 使用列表框 <BR><BR> 实例说明
<BR><BR> 1.首先,我们使用文字编辑软件输入下源程序。 <BR><BR> 源程序:useList.java
<BR><BR><BR>import javax.swing.*; <BR>import java.awt.*; <BR>import
java.awt.event.*; <BR>public class useList extends JApplet <BR>{ <BR>Label
label1; <BR>List colorList; <BR>public void init() <BR>{ <BR>JPanel
panel1=(JPanel)getContentPane(); <BR>panel1.setLayout(new FlowLayout());
<BR>colorList=new List(); <BR>colorList.add("red");
<BR>colorList.add("green"); <BR>colorList.add("blue");
<BR>colorList.select(0); <BR>panel1.add(colorList); <BR>label1=new
Label("You selected red"); <BR>label1.setForeground(Color.red);
<BR>panel1.add(label1); <BR>colorList.addItemListener(new ItemListener()
<BR>{ <BR>public void itemStateChanged(ItemEvent evt) <BR>{ <BR>String
selString; <BR>String sel; <BR>int selNum;
<BR>if(evt.getStateChange()==ItemEvent.SELECTED) <BR>{
<BR>selNum=colorList.getSelectedIndex();
<BR>sel=colorList.getItem(selNum); <BR>selString="You selected "+sel;
<BR>label1.setText(selString); <BR>switch(selNum) <BR>{ <BR>case 0:
<BR>label1.setForeground(Color.red); <BR>break; <BR>case 1:
<BR>label1.setForeground(Color.green); <BR>break; <BR>case 2:
<BR>label1.setForeground(Color.blue); <BR>break; <BR>} <BR>} <BR>} <BR>});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -