为新的JFrame创建新线程

时间:2015-11-22 10:05:43

标签: java multithreading swing

我正在学习线程并且我遇到了问题。我试图制作2帧,一个是主框架,另一个在点击按钮后会显示。我想在新帧运行时停止主框架。你能帮我一个非常简单的例子吗? (并且在点击按钮后也将关闭新框架)。只需2帧,每个按钮就足够了。非常感谢!

1 个答案:

答案 0 :(得分:4)

您应该避免the use of multiple JFrames,而是使用模态dialogsJOptionPane提供了大量优质,简单和优质的服务。灵活的方法。

这是一个例子。单击该按钮后,对话框将显示在JFrame的顶部。主JFrame不再可以点击,因为JOptionPane.showMessageDialog()会产生modal window

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Example {

    public Example() {

        JFrame frame = new JFrame();

        JButton button = new JButton("Click me");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                JOptionPane.showMessageDialog(frame, "I'm a dialog!");
            }
        });

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

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Example();
            }
        });
    }


}

<强>输出:

enter image description here