Java Swing点击按钮创建新窗口

Java Swing是一种用于构建图形用户界面(GUI)的Java库。通过Swing,我们可以创建各种用户界面组件,例如按钮、文本框、标签等。在本篇文章中,我们将重点介绍如何在Java Swing中点击按钮创建新窗口。

准备工作

在开始之前,我们需要确保已经正确安装了Java Development Kit(JDK)和集成开发环境(IDE),例如Eclipse或IntelliJ IDEA。

创建主窗口

首先,让我们创建一个主窗口,该窗口将包含一个按钮。在按钮上点击时,我们将创建一个新的窗口。在这个示例中,我们将使用Java Swing的JFrame类来创建主窗口。

下面是一个创建主窗口的示例代码:

import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainFrame extends JFrame {
    public MainFrame() {
        setTitle("主窗口");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton button = new JButton("创建新窗口");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                createNewWindow();
            }
        });

        getContentPane().add(button);
    }

    private void createNewWindow() {
        NewFrame newFrame = new NewFrame();
        newFrame.setVisible(true);
    }

    public static void main(String[] args) {
        MainFrame mainFrame = new MainFrame();
        mainFrame.setVisible(true);
    }
}

在这段代码中,我们首先创建了一个继承自JFrame的类MainFrame。在构造函数中,我们设置了主窗口的标题、大小和关闭操作。

接下来,我们创建了一个JButton对象,并为其添加了一个监听器。当按钮被点击时,监听器将调用createNewWindow方法。

createNewWindow方法用于创建一个新窗口NewFrame,并将其设置为可见。我们将在下一节介绍如何创建新窗口。

最后,在main方法中,我们创建了一个MainFrame对象,并将其设置为可见。

创建新窗口

现在,让我们创建一个新的窗口。在这个窗口中,我们将展示如何添加一些其他的Swing组件,例如标签和文本框。

下面是一个创建新窗口的示例代码:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class NewFrame extends JFrame {
    public NewFrame() {
        setTitle("新窗口");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JLabel label = new JLabel("姓名:");
        JTextField textField = new JTextField();

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(label);
        getContentPane().add(textField);
    }
}

在这段代码中,我们创建了一个继承自JFrame的类NewFrame。在构造函数中,我们设置了新窗口的标题、大小和关闭操作。

然后,我们创建了一个JLabel和一个JTextField,并将它们添加到窗口的内容面板中。其中,JLabel用于显示一个标签,JTextField用于输入文本。

我们还设置了内容面板的布局管理器为FlowLayout,这样组件将按照从左到右的顺序排列。

完整示例

下面是一个完整的示例代码,演示了如何在Java Swing中点击按钮创建新窗口的功能:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainFrame extends JFrame {
    public MainFrame() {
        setTitle("主窗口");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton button = new JButton("创建新窗口");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                createNewWindow();
            }
        });

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(button);
    }

    private void createNewWindow() {
        NewFrame newFrame = new NewFrame();
        newFrame.setVisible(true);
    }

    public static void main(String[] args) {
        MainFrame mainFrame = new MainFrame();
        mainFrame.setVisible(true);
    }
}

class NewFrame extends JFrame {
    public NewFrame() {
        setTitle("新窗口");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE