跳转到内容

第一个示例

75% developed
来自维基教科书,开放世界中的开放书籍


在本页中,我们将开始使用 swing。我们将看看 `JFrame` 和 `JLabel` 类,并构建一个基本的 swing “hello world” 应用程序。

JFrames 是 swing 组件。swing 组件是图形用户界面 (GUI) 的一部分。框架、窗口、文本框、按钮、开关以及 GUI 应用程序的许多其他部分都是组件。所有 swing 组件的根类是 `JComponent` 类,其他 swing 组件,包括 `JFrame`,都是 `JComponent` 的子类。`JComponent` 是一个抽象类,因此不能直接实例化,但可以进行子类化,这在您想要编写自己的自定义 GUI 组件时很有用。

JFrame 是一个顶级组件,这意味着它包含其他组件,但自身并不被包含。它的屏幕外观由平台决定,但通常它是一个窗口,用户可以调整大小、移动、最大化、最小化,并且有自己的标题栏。

可能最熟悉 `JFrame` 以及组件本身的方法是运行一个创建 `JFrame` 的简短示例程序。以下程序将完成此任务。

Computer code 一个简单的 Swing 应用程序
import javax.swing.JFrame;  // All swing components live
                    // in the javax.swing package


// A simple class to test a JFrame
public class JFrameTest {
    
    public static void main(String[] args) {
        
        // create the frame.  The constructor optionally takes
                // a string as an argument that's used as the title.
        JFrame frame = new JFrame("This is a test!");
        
        // set the size -- 300 by 300 is good
        frame.setSize(300, 300);
        
        // this next line is currently commented.  If you
        // uncomment it, the user will not be able to resize
        // the JFrame

        // frame.setResizable(false);
        
        // has the application exit when the frame is closed
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // makes the frame visible.  The frame is invisible
        // until this method is called.
        frame.setVisible(true);
        
        // these lines are also commented, but you can uncomment
        // them to see their effects.  The first will center the
        // JFrame in the center of the screen.  The second will
        // make it the front, focused window.

        // frame.setLocationRelativeTo(null);
        // frame.toFront();
    }
}

代码创建了一个空的 JFrame。当您运行它时,您应该会看到一个窗口出现在您的屏幕上。代码还说明了一些可以与 JFrames 一起使用的方法,其中一些已注释掉。我鼓励您尝试一下注释和取消注释这些方法,看看效果。

一个空的框架并没有那么令人兴奋,所以在这一节中,我们将看看 JLabels,并将一个放在 JFrame 中。`JLabel` 是一个 GUI 组件,可以容纳图像、一些文本或两者。

以下代码创建了一个 GUI 版本的 “Hello World!” 应用程序。

Computer code Swing 中的 hello world
import javax.swing.*;  // All swing components live
               // in the javax.swing package

// A GUI hello world application
public class Hello {

    public static void main(String[] args) {
        
        // creates the label.  The JLabel constructor
        // takes an optional argument which sets the text
        // of the label.
        JLabel label = new JLabel("Hello, World!");
        
        // The next line is commented out.  If it is
        // uncommented, the text will be aligned with
        // the center of the frame, otherwise it will
        // align on the left.
        
        // label.setHorizontalAlignment(SwingConstants.CENTER);
        
        JFrame frame = new JFrame("Hello");
        frame.add(label);
        
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.toFront();
    }
}

这个程序与前一个程序非常相似,只是它除了 `JFrame` 之外还创建了一个带有文本 “Hello, World!” 的 `JLabel`,并使用 `JFrame` 的 `add()` 方法将它添加到框架中,然后使它可见。如果您按照原样编译并运行程序,那么 “Hello, world” 文本将对齐在窗口的左侧。

通过取消注释 `label.setHorizontalAlignment(SwingConstants.CENTER);` 行,您可以将文本移动到中心。

我们已经看到了如何创建一个 JFrame,它是一个 swing GUI 应用程序的顶级容器,以及一些可以用来更改其设置的 `JFrame` 方法。我们还查看了 `JLabel` 类,并使用 `JFrame` 的 `add()` 方法将 `JLabel` 添加到框架中,以创建一个简单的应用程序。

通过查看这些示例,您可能想知道 JFrames、JLabels 和其他组件还有哪些其他方法。尽管我们将继续查看更多组件和更多方法。幸运的是,Oracle 为所有核心 Java 类(包括 swing)提供了一个宝贵的在线参考,可以在以下链接中查看

http://docs.oracle.com/javase/7/docs/api/index.html


Clipboard

待办事项
添加屏幕截图。


华夏公益教科书