Java从另一个类处理JFrame窗口

时间:2017-02-13 03:14:02

标签: java swing

类Main具有构造JFrame的主要方法。 MainView类具有附加在JFrame上的面板和按钮。

我需要做的是点击某个按钮来处理JFrame窗口。

我已经尝试过各种方法,我从这里找到了Stackoverflow。但到目前为止还没有解决方案。

public final class Main {

static JFrame frame = null;

public static void main(String[] args) throws IOException {

    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {

            try {
                frame = new MainView("Blackjack 2017");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(650, 450);
            frame.setVisible(true);
        }
    });


}
}

来自

public class MainView extends JFrame implements ActionListener {

private static final long serialVersionUID = 4728244239185625080L;
private Dealer dealer;
private User user;
private ControlPanel controlPanel;
public static Container c;

public MainView() {

}

public MainView(String title) throws IOException {

    super(title);

    dealer = new Dealer();
    user = new User();

    System.out.println(title + " frame made");

    controlPanel = new ControlPanel();
    controlPanel.setControlPanel();

    c = getContentPane();
    c.add(controlPanel);

    controlPanel.getPlayBtn().addActionListener(this);
    controlPanel.getExitBtn().addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("Play")) {
        System.out.println("play clicked");
        c.removeAll();
        c.add(playPanel);
        c.validate();

    } else if (e.getActionCommand().equals("Exit")) {


    }

1 个答案:

答案 0 :(得分:0)

查看Closing an Application以了解关闭框架(或对话框)的一些基础知识。

您可以使用ExitAction类,这是一个通用Action,可以添加到任何按钮(或菜单项),并且就像用户点击关闭按钮一样窗口。

代码的工作原理是将windowClosing事件分派给窗口。因此,它假设您已为窗口调用setDefaultCloseOperation(...)