当前位置:文档之家› java swing常用的9种组件.

java swing常用的9种组件.

需要注意的是,取得文本框中的文本时,使用方法getText(),该方法返回的是一个String类型的对象;而要取得密码框中的文本,使用方法getPassword(),该方法返回的是一个char数组。

例如,创建了一个密码框:JPasswordField txtPwd=new JPasswrodField(20);设定该密码框的回显字符为'#':txtPwd.setEchoChar('#');取得密码框中的内容:char []pwd=txtPwd.getPassword();也可以方便地将char数组转化为String类型的对象:String pwdStr=new String(txtP.getPassword());3.菜单(1)菜单也是一种常用的GUI组件,菜单采用的是一种层次结构,最顶层是菜单栏(JMenuBar);在菜单栏中可以添加若干个菜单(JMenu),每个菜单中又可以添加若干个菜单选项(JMenuItem)、分隔线(Separator)或是菜单(称之为子菜单)。

(2)构建应用程序的菜单时,先创建一个菜单栏:JMemuBar menuBar=new JMenuBar();通常使用框架的setJMenuBar(JMenuBar aMenuBar)方法将菜单栏置于框架中:frame.setJMenuBar(menuBar);随后,创建所需要的各菜单并逐个添加到菜单栏中,例如:JMenu menuDBAccount=new JMenu("电表出帐(C)");...JMenu menuSysConfig=new JMenu("系统设置(X)");menuBar.add(menuDBAccount);...menuBar.add(menuSysConfig);最后,向各个菜单中添加菜单选项、分隔线或是子菜单,如图所示的系统设置菜单为例://创建菜单选项或是子菜单JMenuItem sysConfigItem=new JMenuItem("参数设置(S)...");JMenu viewMenu=new JMenu("外观设置");JRadioButtonMenuItem metalItem=new JRadioButtonMenuItem("金属外观");JRadioButtonMenuItem classicItem=new JRadioButtonMenuItem("传统外观");JRadioButtonMenuItem modernItem=new JRadioButtonMenuItem("现代外观");JMenuItem cascadeItem=new JMenuItem("层叠窗口(C)");JMenuItem iconifyItem=new JMenuItem("排列图标(I)");//将三个单选按钮添加到一个按钮组ButtonGroup group=new ButtonGroup();group.add(metalItem);group.add(classicItem);group.add(modernItem);//构建子菜单viewMenu.add(metalItem);viewMenu.add(classicItem);viewMenu.add(modernItem);//添加到系统设置菜单menuSysConfig.add(sysConfigItem); //添加菜单选项menuSysConfig.add(viewMenu); //添加子菜单menuSysConfig.add(cascadeItem); //添加菜单选项menuSysConfig.addSeaparator(); //添加分隔线menuSysConfig.add(iconifyItem); //添加菜单选项(3)通常的菜单选项是JMenuItem,也可以使用复选框或是单选按钮类型的菜单选项,分别是JCheckBoxMenuItem和JRadioButtonMenuItem。

和JRadioButton一样,使用JRadioButtonMenuItem时,需要将它们添加到同一个按钮组中。

(4)当点击一个菜单选项时,会生成一个动作事件(ActionEvent) 。

为菜单选项添加事件侦听器就可以侦听其动作事件,例如:sysConfigItem.addActionListener(aListener);(5)为一个菜单或是菜单选项设置快捷键:menuSysConfig.setMnemonic('X');sysConfigItem.setMnemonic('S');(6)如果需要快速选择未打开的菜单中的菜单选项或是子菜单,可以使用加速键。

例如,当希望按下CTRL+L时就立刻选中lockItem菜单选项,而不管lockItem所在的菜单是否已经打开,就可以使用下面的方法为lockItem设置加速键:KeyStroke ks=KeyStroke.getKeyStroke( KeyEvent.VK_L,InputEvent.CTRL_MASK);lockItem.setAccelerator(ks);4.弹出式菜单(1)弹出式菜单(JPopupMenu)是一种特殊的菜单,和普通菜单的区别在于其不固定在菜单栏中,而是可以四处浮动的。

(2)下面的语句创建了一个弹出式菜单:JPopupMenu popup=new JPopupMenu();与向菜单中添加菜单选项、分隔线或是子菜单一样,使用同样的方法向弹出式菜单中添加内容。

用户可以通过点击某个特殊的鼠标键(称为触发器)来触发弹出式菜单。

例如,在Windows操作系统上,一般是鼠标右键。

为此,应用程序中应该监听弹出式菜单的父组件的鼠标事件:当有鼠标事件发生时,使用isPopupTrigger()方法来判断是否为弹出式菜单的触发器;如果是,则在该父组件上显示出弹出式菜单。

同样以图所示意的弹出式菜单为例,该菜单的父组件是一个显示公司徽标的标签labLogo,当用户在该标签上右击鼠标时,弹出式菜单出现。

下面的代码实现了上述功能:labLogo.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e){if (e.isPopupTrigger()){popup.show(labLogo,e.getX(), e.getY());}}});5.工具条(1)有些菜单选项的使用频率较高,每次使用都要打开菜单,效率较低。

为此,可以在工具条(JToolBar)中提供与这些菜单选项相对应快捷按钮,以提高用户的效率。

工具条中通常是一些带有图标的按钮,当然也可以是其它类型的GUI组件,例如组合框等等。

(2)通常,工具条所提供的操作是菜单所能提供操作的一个子集,目的是能够快速访问那些使用频率高的操作。

(3)工具条通常被置于布局为BorderLayout的容器中。

工具条被置于布局为BorderLayout的一个面板中。

工具条还有一个特点:可以被拖动到所在容器其它边界,甚至脱离其所在的容器。

(4)生成一个工具条对象,可以使用语句:JToolBar toolbar=new JToolBar();(5)还可以在生成工具条时,指明工具条的标题。

这样,当工具条脱离所在容器时,可以在自己的标题栏显示标题:JToolBar toolbar=new JToolBar("颜色工具条");(6)向工具条中添加组件,使用add方法:toolbar.add(btnBlue);toolbar.add(btnYellow);(7)缺省情况下,组件是按照水平方式逐个添加入工具条的,也可以在生成工具条时指明以垂直方式来添加组件:JToolBar toolbar=new JToolBar(SwingConstants.VERTICAL);(8)如果希望工具条不能移动,可以使用setFloatable方法来设置:toolbar.setFloatable(false);(9)当工具条中的按钮上只显示图标时,用户可能不能确切知道各个按钮的具体含义。

可以使用工具提示解决这个问题:btnYellow.setToolTipText("面板置为黄色");6.对话框(1)对话框是用户和应用程序进行交互(对话)的一个桥梁:对话框可以用于收集用户的输入数据传递给应用程序,或是显示应用程序的运行信息给用户。

(2)对话框分为模式(modal)和非模式两种。

模式对话框处于可见状态时,用户将不能与应用程序的其它窗口进行交互,而非模式对话框则没有此限制。

(3)Java中提供了一个类JOptionPane用于创建简单的模式对话框,如果希望创建非模式对话框或是自定义对话框可以使用JDialog。

(4)JOptionPane类中提供了4种静态方法,用以显示4种常用的对话框:showMessageDialog 消息对话框showInputDialog 输入对话框showConfirmDialog 确认对话框showOptionDialog 选项对话框(5)JOptionPane 对话框主要由如下几个部分构成:图标、消息以及按钮。

(6)类JOptionPane中定义了如下五个常量:JOptionPane.QUESTION_MESSAGERMATION_MESSAGEJOptionPane.WARNING_MESSAGEJOptionPane.ERROR_MESSAGEJOptionPane.PLAIN_MESSAGE //不使用图标前四个常量对应着四个图标,第五个常量表示不使用图标。

开发人员可以使用这些常量来指定对话框中显示的图标。

当然,对话框也提供了方法使得开发人员可以使用自己的图标。

(7)JOptionPane对话框不仅仅可以显示字符串类型的消息,还可以显示其它类型的消息。

例如,可以是一副图片、还可以是一个GUI组件。

更广泛地说,这里的消息可以是任何类型的对象或是对象数组。

在书上的例子中,你可以看到不同类型消息的应用。

(8)JOptionPane对话框底部的按钮取决于对话框类型和选项类型。

例如,对于确认对话框,可以使用如下的四种选项类型之一:DEFAULT_ OPTIONYES_NO_OPTIONYES_NO_CANCEL_OPTIONOK_CANCEL_OPTION(9)如果设计一个包括两个标签、一个文本输入框、一个密码输入框和两个按钮的登录对话框,这些GUI组件被添加到一个使用了网格袋布局的面板panel中,面板panel 又被添加到LoginDialog的内容窗格。

相关主题