Java——创建简单的用户界面

创建简单的用户界面

Java通过使用Swing来支持可视化的软件,Swing是Java类的集合,它可以表示所有不同的按钮、文本框、滑块,以及可以成为GUI一部分的其他组件,同时还包括了可以从上述组件中接收用户输入的类。

1、Swing和抽象窗口工具包

Java是一种跨平台语言,使用它可以为很多不同的操作系统编写程序,因此其图形用户软件必须是灵活的,不仅能够支持Windows和Mac窗口风格,还必须能够盲足其他平台的要求。

在Java中,使用两组类来开发程序的用户界面:Swing和抽象工具包(Abstract Windowing Toolkt , AWT)。这些类让你能够创建图形用户界面以及接受用户输入。

Swing提供了编写使用图形界面的程序所需要的一切。使用Java的用户界面类,可以创建包括下述元素的GUI:

按钮、复选框、标签和其他简单组件;

文本框、滑块和其他复杂组件;

下拉菜单和弹出菜单;

窗口、框架、对话框和applet窗口。

2、使用组件

在Java中,图形用户界面的每部分都由Swing包中的一个类表示。对于按钮,是JButton类、窗口是JWindow类、文本框是JtextField类等。

组织图形用户界面时,需要使用两类对象:组件和容器。组件是用户界面中的独立元素,如按钮或滑块;容器则是用于容纳其他组件的组件。

创建界面的第一步是创建能够容纳组件的容器。在应用程序中,该容器通常是窗口或框架。

1)、窗口和框架

窗口和框架是能够在用户界面上显示,并可以容纳其他组件的容器。这些容器分别是使用Swing包中额JWindow和JFrame类创建的。创建前需要导入javax.swing.*包,当然现在的开发软件都自动添加。

一种在Java应用程序中使用框架的方法是,将应哦也难怪程序声明为JFrame的子类,这样应用程序将继承作为框架所需的行为。创建框架时必须在框架的构造函数中执行几种操作:

调用超类JFrame的构造函数;

设置框架的标题;

设置框架的大小;

设置框架的外观;

定义用户关闭框架时应执行的操作。

还必须显示框架,除非由于某种原因,在应用程序开始运行时不显示框架。

所有这些操作都可以在框架的构造函数中完成。

当使用Swing创建了图形用户界面时,可以对它的外观进行自定义,从而控制按钮和其他组件的显示方式和行为。Java7中引用了增强的外观,名为Nimbus,当其在类中使用时,必须先启用。通过调用Swing包中的UIManager类的setLookAndFeel()方法可以设置我外观。下面来看一个完整的实例:

public class JavaApplication1 extends JFrame

{

    public JavaApplication1()

    {

        setTitle("使用setTile可以指定窗口的名称");

        setLookAndFeel();

        setSize(300, 100);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setVisible(true);

    }

    private void setLookAndFeel()

    {

        try {

            UIManager.setLookAndFeel("som.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

        } catch (Exception e) {

        }

    }

    public static void main(String[] args)

    {

        JavaApplication1 application1 = new JavaApplication1();

    }

}


2)、按钮

JButton和其他组件一样,也位于java.awt.swing包中。Jbutton对象是一个可以单击的按钮,其标签描述了单击按钮的结果。该标签可以使文本、图像或两者的组合。下面的语句创建一个名为onButton的JButton对象,并将其标签设置为OK:

JButton okButton = new JButton(“OK”);

创建好JButton等组件后。应调用add()方法将其加入到容器中:

add(okButton);

在容器中添加组件时,不需要致命组件在容器中显示的位置,组件的布局由被称为布局管理器的对象决定。最简单的布局管理器是FlowLayout类,它位于java.awt中。

要让容器使用特定不布局管理器,必须首先创建该布局管理器的对象。使用下面的语句创建FlowLayout对象:

FlowLayout fl = new FlowLayout();

创建好后,调用其setLayout()方法将其管理器同容器关联起来,该方法将布局管理器对象作为唯一的参数:

Pane.setLayout(flo);

这条语句将flo对象指定为容器pane的布局管理器。

接下来要创建的应用程序为Playback类,它可以显示一个包含3个按钮的框架:

public class Playback extends JFrame{

    public Playback() throws HeadlessException {

        super("这是Playback类");

        setSize(225 , 80);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        FlowLayout flowLayout = new FlowLayout();

        setLayout(flowLayout);

        JButton button1 = new JButton("开始");

        JButton button2 = new JButton("停止");

        JButton button3 = new JButton("暂停");

        add(button1);

        add(button2);

        add(button3);

        setVisible(true);

    }

    public static void main(String[] args)

    {

        Playback playback = new Playback();

    }

}


3)、标签和文本框

Jlable组件显示用户不能修改的休息,这种信息可以是文本、图形或两者的组合。这些组件常用于标识界面中的其他组件,因此而得名。

JTextField组件是用户可以输入单行文本的区域。创建时可以设置其宽度。

下面的语句创建一个JLable组件和一个JTextField对象,并将它们加入到容器中:

JLabel jLabel = new JLabel("网页地址" , JLabel.RIGHT);

          JTextField jTextField = new JTextField(20);

          add(jLabel);

          add(jTextField);


对象包含的文本可使用方法getText()来获取,使用setText()来设置:

String str = jLabel.getText();

jLable.setText(“小武灵灵”);

4)、复选框

JcheckBox组件由文件和方框组成,用户可以选中它。下面的语句创建了一个JcheckBox对象,并将其加入到容器中:

JCheckBox checkBox = new JCheckBox("要不要选中我啊?" , true);

add(checkBox);

第二个参数设置复选框是否默认选中

JCheckBox可以单个显示,也可以编成组。在一组复选框中不能同时选中多个。要使JCheckBox对象成为某个组的一部分,必须创建一个ButtonGroup对象,如下:

5)、组合框

JComboBox组件是一个弹出式选择列表,也可以设置成能够接收文本输入。在这种情况下,用户可以使用鼠标选中列表项,也可以使用键盘来输入文本。组合框有点像一组复选框,但在没有打开列表时,只能看见其中的一个选项。

要创建JcomboBox对象,必须在创建这种对象后加入每个选项,如下所示:

JComboBox comboBox = new JComboBox();

for (int i = 0; i < 10; i++) {

comboBox.addItem("第" + (i+1) + "项");

}

add(comboBox);

要让JComboBox能接收文本输入,必须使用true参数调用其setEditable()方法:

comboBox.setEditable(true);

6)、文本区域

JtextArea组件允许用户输入多行文本,你可以指定该组件的宽高。下面的语句创建一个JTextArea组件,其宽度大约为40个字符,高度为8行:

JTextArea textArea = new JTextArea("文本框一共5行6列", 5, 6);

add(textArea);

文本区域组件的行为可能与读者预期的不同:用户达到文本区域底部时,它自动增大,文本区域的底部和右边无滚动条。要实现类似于其他窗口软件中的文本区域,必须将文本区域放在被称为滚动窗格的容器中,这个将在以后讲到。

7)、面板

面板是使用Swing中的JPanel类创建的。JPanel对象是可以再Swing界面中使用的最简单的容器,用于将显示区域划分成不同的容器组。将显示区域分成几部分后,可以采用不同的规则来组织每个部分。

JPanel panel = new JPanel();

add(panel);

当需要在界面中包含绘画区域时,也可以使用面板。JPanel的另一种用途是,用于创建可加入到其他类中的组件。

3、创建自己的组件

面向对象编程的一个主要优点是,能够在不同的项目中重用类。下面我们将创建一个特殊的面板组件,可在其他Java程序中重用它,该组件名为ClockPanel,是JPanel的子类,代码如下:

ClockPanel.java

public class ClockPanel extends JPanel{

    public ClockPanel() {

        super();

        String currentTime = getTime();

        JLabel time = new JLabel("当前时间是:");

        JLabel current = new JLabel(currentTime);

        add(time);

        add(current);

    }

    final String getTime() {

        String time;

        Calendar now = Calendar.getInstance();

        time = now.get(Calendar.YEAR) + "年" + now.get(Calendar.MONTH) + "月" + now.get(Calendar.DAY_OF_MONTH) + "日" + now.get(Calendar.HOUR_OF_DAY) +  "时" + now.get(Calendar.MINUTE) + "分" + now.get(Calendar.SECOND) + "秒";

        return time;

    }

}


ClockFrame.java

public class ClockFrame extends JFrame{

    public ClockFrame() throws HeadlessException {

        super("创建自定义组件");

        setSize(500, 500);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        FlowLayout layout = new FlowLayout();

        setLayout(layout);

        ClockPanel clockPanel = new ClockPanel();

        add(clockPanel);

        setVisible(true);

    }

    public static void main(String[] args)

    {

        ClockFrame clockFrame = new ClockFrame();

    }

}


我们发现getTime()方法带有final关键字,这是因为其可以防止它被子类中的方法覆盖。这对GUI组件来说是必须的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值