Swing 常用的9种组件

 1.标签 (JLabel)

  标签 (JLabel)通常是用来标识另外一个组件的含义。以在标签上显示文字、图象或是文字图象的组合。

  JLabel labText=new JLabel(“文本标签”);

  labText.setText("文本标签");

  2.密码框 (JPasswordField)

  密码框实际上是一种特殊类型的文本框,用户可以向其中输入文本并加以编辑。和文本框不同的是,向密码框中输入文本时,显示的不是实际输入的文本,而是特殊的回显字符(通常是'*')。可以使用setEchoChar(char c)方法来改变缺省的回显字符。

  需要注意的是,取得文本框中的文本时,使用方法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)");

  ...

  menuBar.add(menuDBAccount);

  最后,向各个菜单中添加菜单选项、分隔线或是子菜单,如图所示的系统设置菜单为例:

  //创建菜单选项或是子菜单

  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');

  4.工具条

  (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("面板置为黄色");

  5.对话框

  (1)对话框是用户和应用程序进行交互(对话)的一个桥梁:对话框可以用于收集用户的输入数据传递给应用程序,或是显示应用程序的运行信息给用户。

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

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

  (4)JOptionPane类中提供了4种静态方法,用以显示4种常用的对话框:

  showMessageDialog 消息对话框

  showInputDialog 输入对话框

  showConfirmDialog 确认对话框

  showOptionDialog 选项对话框

  (5)JOptionPane 对话框主要由如下几个部分构成:图标、消息以及按钮。

  (6)类JOptionPane中定义了如下五个常量:

  JOptionPane.QUESTION_MESSAGE

  JOptionPane.INFORMATION_MESSAGE

  JOptionPane.WARNING_MESSAGE

  JOptionPane.ERROR_MESSAGE

  JOptionPane.PLAIN_MESSAGE   //不使用图标

  前四个常量对应着四个图标,第五个常量表示不使用图标。开发人员可以使用这些常量来指定对话框中显示的图标。当然,对话框也提供了方法使得开发人员可以使用自己的图标。

  (7)JOptionPane对话框不仅仅可以显示字符串类型的消息,还可以显示其它类型的消息。例如,可以是一副图片、还可以是一个GUI组件。更广泛地说,这里的消息可以是任何类型的对象或是对象数组。在书上的例子中,你可以看到不同类型消息的应用。

  (8)JOptionPane对话框底部的按钮取决于对话框类型和选项类型。例如,对于确认对话框,可以使用如下的四种选项类型之一:

  DEFAULT_ OPTION

  YES_NO_OPTION

  YES_NO_CANCEL_OPTION

  OK_CANCEL_OPTION

  6.表格

  (1)表格(JTable)也是一种常用的GUI组件,常用来显示大量的数据。

  (2)表格是模型-视图-控制器设计模式的一个典型应用。表格本身并不存储所显示的数据,数据实际上是存储在表模型中的,表格只是表模型的一种视图.

  (3)JTable提供了如下两种构建器,可以方便地创建简单表格:

  JTable(Object[][] data, Object[] columnNames)

  JTable(Vector data, Vector columnNames)

  (4)采用上述方法可以发现存在不少缺点:例如,每一列的宽度都是一样的;未能正确显示日期;数值未能按照我们的希望保留到小数点后面两位,并靠右显示;表格中的数据必须预先存放在一个数组中或是向量(Vector)中等等。在一个真正的应用程序中,使用这样的表格是不能满足实际应用的要求的。

  (5)在缺省情况下,表格中每列是等宽的,并且调整某列的宽度时,其它列的宽度也会相应自动调整。可以使用下面的语句关闭列宽自动调整特性:

  table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

  之后,要设定某列的宽度,首先依据该列的列名取得列对象,以设定第一列宽度为例:

  TableColumn col=table.getColumn(columnNames[0]);

  然后调用setPreferredWidth方法设定该列宽度:

  col.setPreferredWidth(200);

  (6)前面已经提到,表格有一个对应的表模型,数据是存储在表模型中,表格是表模型的视图。表格在建立视图时总需要自动调用表模型中的一些方法,这些方法的返回值决定了最终的视图。部分常需要用到的方法的名称和含义如下:

  public int getRowCount();//取得行数

  public int getColumnCount();//取得列数

  public Object getValueAt(int row, int column); //取得指定单元格的数据

  //指定单元格是否允许编辑

  public boolean isCellEditable(int row, int column);

  public String getColumnName(int column); //取得指定列的列名

  public Class getColumnClass(int column);

  缺省表模型DefaultTableModel提供了上述方法的缺省实现。例如,DefaultTableModel中的isCellEditable方法总是返回true,表示所有的单元格都允许编辑; getColumnClass方法总是返回Object.class.

  (7)可以使用DefaultTableModel创建一个表模型对象,然后再使用表模型创建表格,例如:

  DefaultTableModel model=new DefaultTableModel(0,5);//0行5列的表模型

  JTable table=new JTable(model);

  然后,可以使用model的addRow、removeRow方法向表模型中添加或是删除数据,对表模型增删数据的结果会自动反映到表格视图上来。

  但是,通常情况下,我们并不直接使用DefaultTableModel。更多的情形是继承DefaultTableModel类,并覆盖其中部分方法以达到特殊的要求.

  7.JScrollbar 滚动条

  (1)构造函数

  mySlider = new JScrollbar(JScrollbar.HORIZONTAL ,

  0 , 1 , 0 , Integer.MAX_VALUE);

  滚动条方向

  滑块初始位置

  滑块尺寸

  滚动槽最小值

  滚动槽最大值

  (2)方法

  int getValue()   返回滑块当前位置

  setUnitIncrement(1); 设置单位增量(点按两端箭头)

  setBlockIncrement(50); 设置块增量(点按滚动槽)

                   

你可能感兴趣的:(Swing 常用的9种组件)