Java学习笔记之Swing(三)

Java学习笔记之Swing(三)

Swing中的常用控件

你将学到:

  • 了解如何创建文本框和文本框的实际应用;
  • 了解如何创建复选框和复选框的实际应用;
  • 了解如何创建单选按钮和单选按钮的实际应用;

文本框

文本框和按钮一样,都是非常常用的控件,文本框提供了一个输 入信息的控件。

文本框是通过JTextField类来创建的,在创建的文本框中当文本超出文本框规定长度时,将自动滚动文本显示。文本框是通过JTextField类的构造器创建的,包括5种构造器,如表所示。

构造器说明
public JTextFiled()创建普通的文本框
public JTextFiled(String text)创建右默认值的文本框
public JTextFiled(int columns)创建指定长度的文本框
public JTextFiled(String text,int columns)创建指定长度和指定文本内容的文本框
public JTextFiled(Documents doc,String text,int columens)创建具有默认值,长度和文本内容的文本框

文本框也是会触发事件的,它和按钮一样,都是触发ActionEvent事件。按钮是被单击时触发事件,而文本框是当用户按下回车键时触发事件。

多行文本框

当希望进行多行输入时,文本框就不能满足其要求,这时候就需要创建多行文本框。多行文本框也是文本框的一种特殊形式,多行文本框是通过JTextArea类实现的。JTextArea类中提供了6种构 造器来创建多行文本框,构造器如表所示。

构造器|说明
------|----
public TextArea()|创建没有内容的多行文本框,默认的行数和列数为0
public TextArea(String text)|创建指定内容的文本框,默认的行数和列数为0
public TextArea(int row,int columns)|创建一个指定行和列的多行文本框
public TextArea(String text,int row,int columns)|创建指定行,列和文本内容的多行文本框
public TextArea(Documents doc)|创建具有文档模型的多行文本框。默认的行和列为0
public TextArea(Documents doc,String text,int row,int columns)|创建指定文本模型、文本内容、列和行的多行文本框

密码框

密码框是文本框的改进的控件,是一种专门用于输入密码的文本 框。在文本框中输入信息后,将不直接显示输入的信息,而是使 用特定的特殊字符来进行显示。密码框是通过JPasswordField类 来创建的,因为密码框和文本框的关系,所以JPasswordField类的构造器是和JTextField类的构造器相同的

复选框和单选按钮

复选框和单选按钮具有很多相似的地方,它们在实际开发中也经 常要使用到。例如需要用户来选择兴趣爱好时,一般都很少是只 有一个爱好的,这里就可以创建复选框来实现其功能,来让用户 进行多项选择操作。但是例如性别等信息,是不可能存在多个选 择的,它只能在有限的几个选项中选择其中一个,这里就可以使 用单选按钮。

复选框

通过JRadioButton与ButtonGroup的配合使用,可以很方便地实现 单项选择。若需要使用多项选择,则应该使用复选框——JCheckBox类。与JRadioButton的不同是,JCheckBox不需要编组 使用,各个选项之间没有逻辑约束关系。 该类提供了8个构造器,表中列出了其中7个比较常用的。

构造器说明
public JCheckBox()创建没有任何内容的复选框
public JCheckBox(Icon icon)创建指定图标的复选框
public JCkeckBox(Icon icon,boolean selected)创建指定图标以及是否被选中的复选框(若布尔值为true则表示被选中)
public JCkeckBox(String text)指定复选框的内容
public JCheckBox(String text,boolean selected)创建指定文本以及是否被选中的复选框
public JCheckBox(String text,Icon icon)创建指定文本和图标的复选框
public JCkeckBox(String text,Icon icon,boolean selected)创建指定文字、图标以及确定是否被选中的复选框

实例代码:

public class JCheckBoxTest {
    private static void constructGUI() {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("JCheckBox Test");
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         //JCheckBox ac = new JCheckBox("A/C",true);使用复选框的两个参数的构造器来简化代码
         JCheckBox ac = new JCheckBox("A/C");
         ac.setSelected(true);
        JCheckBox cdPlayer = new JCheckBox("CD Player");
        JCheckBox cruiseControl = new JCheckBox("Cruise Control");
        JCheckBox keylessEntry = new JCheckBox("Keyless Entry");
        JCheckBox antiTheft = new JCheckBox("Anti-Theft Alarm");
        JCheckBox centralLock = new JCheckBox("Central Lock");
        frame.add(new JLabel("Car Features"));
        frame.add(ac);
        frame.add(cdPlayer);
        frame.add(cruiseControl);
        frame.add(keylessEntry);
        frame.add(antiTheft);
        frame.add(centralLock);
        frame.pack();//pack()方法可以将JFrame内容面板中的控件调整到适合的尺寸和布局
        frame.setVisible(true);
    }
    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                constructGUI();
            }
        });
    }

}

如果我们不想调用pack方法的话,我们可以调用JFrame的setSize和SetBounds方法。需要注意的是我们需要在setVisible方法前调用这两个方法。

效果图:

输入图片说明

单选按钮

单选按钮是一种只能在一组选项中选择其中一个选项的控件。单选按钮是通过使用JRadioButton类来创建的,在JRadioButton类 中具有7种构造器形式,构造器如表所示。

  构造器|说明
  -----|----
  public JRadioButton()|创建没有文字、图标以及没有被选中的按钮
  public JRadioButton(Icon icon)|创建一个具有图标的按钮
  public JRadioButton(Icon icon,boolean selected)|创建指定图标,以及确定是否被选中的按钮
  public JRadioButton(String text)|创建一个指定按钮文字的按钮
  public JRadioButton(String text,boolean selected)|创建指定文字以及确定选中与否的按钮
  public JRadioButton(String text,Icon icon)|创建有文字和图标的按钮
  public JRadioButton(String text,Icon icon,boolean selected)|创建指定文本、按钮以及是否被选中的按钮

实例代码:

  	   	//创建三个单选按钮
  	   	JRadioButton button1 = new JRadioButton("Red");
        JRadioButton button2 = new JRadioButton("Green");
        JRadioButton button3 = new JRadioButton("Blue");
        // 创建按钮组
        ButtonGroup colorButtonGroup = new ButtonGroup();
        colorButtonGroup.add(button1);
        colorButtonGroup.add(button2);
        colorButtonGroup.add(button3);
        button1.setSelected(true); //设置默认情况下按钮1被选中
        frame.add(new JLabel("Color:"));
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.pack();
        frame.setVisible(true);

注意:当我们创建多个单选按钮时,如果我们不将按钮添加到按钮组中,那么多个按钮就会出现同时被选中的情况。

选项卡

选项卡也是开发GUI界面常用的控件之一,通过使用选项卡可以在 同一个窗体中提供很多不同的界面,可以通过选项卡提供的标签 在界面间方便地进行切换。选项卡是通过JTabbedPane类创建的。

选项卡可以产生多个标签框架,每一个标签框架窗口自成一个系统,即 包含多个页面,每个页面与一个标签对应。当选择某一个标签时,标签 框架窗口会自动显示出此标签框架的内容,并触发一个ChangeEvent事件 ,这个事件由ChangeListener监听器监听并处理。

选项卡具有以下构造方法及常用方法:

  • public JTabbedPane()方法:该方法创建一个TabbedPane对象,该对象 具有默认的JTabbedPane.TOP选项卡布局;
  • public JTabbedPane(int tabPlacement)方法:该方法使用指定的参数tabPlacement创建一个TabbedPane对象,tabPlacement参数有常值, JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT或 JTabbedPane.RIGHT
  • public JTabbedPane(int tabPlacement, int tabLayoutPolicy)方法: 该方法以指定的参数tabPlacement、tabLayoutPolicy创建一个TabbedPane对象,该对象具有指定的tabPlacement选项卡布局和tabLayoutPolicy选项卡布局策略。其中参数tabLayoutPolicy有常值, JTabbedPane.WRAP_TAB_LAYOUT、JTabbedPane.SCROLL_TAB_LAYOUT

分割窗口

分割窗格(JSplitPane)也是Swing中常用的控件之一,其能够将单个空间分割成两个部分,并在两个部分中显示不同的内容。

JSplitPane控件允许在单个空间中放置两个控件,开发人员可以 自由决定按水平方向或垂直方向划分空间,还可以在程序运行期 间使用鼠标自由调整空间的分割比例。通过JSplitPane控件的嵌 套使用,可以将空间分割成更多的部分。JSplitPane类提供了5个构造器,如表所示。

滑块和进度条

滑块

JSlider类是Swing包中提供的用于实现滑块的控件,通过JSlider控件可以让用户在限定的范围内方便地选择需要的值。JSlider类 提供的滑块可以是水平方向的,也可以是垂直方向的,并且可以 根据需要设置成为不同的外观风格。

提示:滑块组件是由可以拖动的滑块和一个范围组件组成的;用 户可以通过拖动滑块在一个区间范围里进行选择。

进度条

ProgressBar是Swing中提供的用来实现进度条的控件,使用其可以非常方便地完 成进度条的开发。在应用中恰当使用进度条可以即时通告用户系统的一些信息,避免用户因不知道系统运行情况而焦急地等待,从而使界面更加友好。 JProgressBar类提供了5个构造器,其中有4个是比较常用的,下表列出了这4个常用的构造器。

列表框

列表是图形用户界面程序中常 用到的组件,列表允许用户从列表项中选择一个或多个选项,默认情况下,列表支持单选;选择状态由分隔符来区别。并且可以通过JList中提供的setSelectionMode方法使得列表支持多选。

JList的常用构造方法如下所示:

  • public JList()方法:该方法可以构造一个使用空模型的JList对 象。
  • public JList(Object[] listData)方法:该方法以显示指定数组 中的元素构造一个JList。

注意:JList类没有提供滚动功能,但是可以通过将其放置在 JScrollPane中来实现滚动操作。

下拉列表框

下拉列表及组合框,下拉列表与列表不同的是,下拉列表只支持 单个选项,只允许用户选择一个选项。优点是能节省空间,使界 面更紧凑。并且只有用户单击下拉列表时,列表选项才会显示。下拉列表框是通过JComboBox类来创建的,JComboBox控件实际上组合了一个文本框与一个下拉列表。

注意:在默认的情况下,下拉列表是不可以被用户编辑的,但是可以使用JComboBox提供的方法setEditable方法使其可以被编辑 。

菜单

菜单(JMenu)是标题栏下面的一行文字部分。菜单是应用程序中最常用的组件。菜单的组织方式为:一个菜单条JMenuBar包含多个菜单项(JMenuItem)。JMenuItem有两个子类,分别为JRadioButtonMenuItemJCheckBoxMenuItem用于表示单选菜单项和复选菜单项。当用户选择某个菜单项后,就会触发一个ActionEvent事件,由ActionListener监听器处理。

菜单项有两种状态:启用状态和禁用状态,菜单项的状态可以使 用setEnabled()方法设置。创建完整的菜单一般需要以下几步:

  1. 创建菜单栏;
  2. 创建菜单以及子菜单;
  3. 创建菜单项;
  4. 将菜单项添加到子菜单或菜单中,将子菜单加入到菜单中,将菜单加入到菜单栏。

实例代码:

JMenuBar menuBar = new JMenuBar();//创建菜单栏
    JMenu fileMenu = new JMenu("File");
    JMenu editMenu = new JMenu("Edit");
    JMenu helpMenu = new JMenu("Help");
    //将菜单添加到菜单栏
    menuBar.add(fileMenu);
    menuBar.add(editMenu);
    menuBar.add(helpMenu);
    // 为每一个菜单创建子菜单
    JMenuItem fileNewMI = new JMenuItem("New");
    JMenuItem fileOpenMI = new JMenuItem("Open");
    JMenuItem fileSaveMI = new JMenuItem("Save");
    JMenuItem fileExitMI = new JMenuItem("Exit");
    // 将子菜单添加到菜单
    fileMenu.add(fileNewMI);
    //为菜单添加事件监听器
    fileNewMI.addActionListener(actionListener);
    fileMenu.add(fileOpenMI);
    fileOpenMI.addActionListener(actionListener);
    fileMenu.add(fileSaveMI);
    fileSaveMI.addActionListener(actionListener);
    fileMenu.addSeparator();
    fileMenu.add(fileExitMI);
    fileExitMI.addActionListener(actionListener);
    JMenuItem editCopyMI = new JMenuItem("Copy");
    JMenuItem editPasteMI = new JMenuItem("Paste");
    editMenu.add(editCopyMI);
    editMenu.add(editPasteMI);
    JMenuItem helpAboutMI = new JMenuItem("About");
    helpMenu.add(helpAboutMI);

运行效果:

输入图片说明

弹出式菜单

弹出式菜单有时也称为右键菜单,其一般在用户按下鼠标右键时在鼠标位置弹出,能够给用户的操作提供更大的方便。从某种程度上来说,右键菜单设计的好坏直接影响应用程序的易用性。弹出式菜单是通过JPopupMenu类来创建,通过该类提供的show方法将菜单显示在指定的位置上。

注意:JPopupMenu类不是继承JMenu类的而是从JComponent类继承过来。弹出式菜单的创建和菜单的创建基本相同,也需要新建一个弹出式菜单后再加入菜单项。

转载于:https://my.oschina.net/FelixSmile/blog/750127

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值