从main实现并调用JFrame / ActionListener类

时间:2013-10-27 18:48:56

标签: java swing jframe actionlistener

我正在尝试让我的程序在实际程序启动之前启动一个收集信息的gui。在main中我尝试调用JFrame,然后应该运行直到按下开始按钮然后主程序应该启动。除了initializeLauncher的基类之外,一切似乎都是正确的。谢谢!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class InitializeLauncher implements ActionListener {

    InitializeLauncher() {
        JFrame frame = new JFrame("launcherClient");

        Container c = frame.getContentPane();
        Dimension d = new Dimension(700,400);
        c.setPreferredSize(d);

        JButton startButton = new JButton("Start");
        JPanel pane = new JPanel();

        startButton.addActionListener(this);

        pane.add(startButton);
        frame.add(pane);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
        frame.setVisible(true);
    }

    public void buttonClicked(ActionEvent e)
    {
        ApplicationDeploy displayExample = new ApplicationDeploy();
        displayExample.initializeGameClient();
    }
}

...然后在主要部分我称之为:

InitializeLauncher launcher = new InitializeLauncher();
launcher.InitializeLauncher();

1 个答案:

答案 0 :(得分:3)

通过使你的课抽象,你正在修复错误的东西。相反,您应该为您的班级提供缺少的方法public void actionPerformed(ActionEvent e) {...}

这里的基本规则是,如果你声明你的类要实现一个接口,这里是ActionListener接口,那么类必须实现接口的所有方法。

@Override
public void actionPerformed(ActionEvent e) {
   // ... your code that should occur when the button is pressed goes here
}

请注意,您的buttonClicked(...)方法对您没有任何帮助。可能你会想要摆脱那个方法并将其代码放入actionPerformed方法。

顺便说一下,我经常使用JOptionPane来获得你正在使用JFrame的功能。