Java难题 - 尝试在单击按钮后进行GUI处理

时间:2013-02-23 11:44:56

标签: java swing jframe jbutton actionevent

已解决:@Desolator已在下面的评论中完全使用我的编码

好的,所以我已经制作了3个课程,这些课程都是相互联系的:

SplashScreen> ProjectAssignment> CompareSignature

我想谈的课程是启动画面类:

所以在这堂课中我有3种方法:

public static void createAndShowGUI()   - 此方法包含创建和显示GUI的所有信息   - JFrame frame = new JFrame(“Welcome!”);等...

public void actionPerformed(ActionEvent e)   - 此方法为按钮提供了单击和打开下一个GUI的功能   - if(e.getSource()== enterButton)等......

public static void main(String[] args)   - 这个方法只有“createAndShowGUI();”在其中,以便在代码运行时显示GUI

我需要做的是能够给JButton另一个动作,当它被点击时关闭SplashScreen类(来自createAndShowGUI),但我的问题是:

  1. 我无法在actionPerformed方法中引用JFrame frame = new JFrame("");方法createAndShowGUI,因为createAndShowGUI方法是静态的

  2. 现在你说“只需取出”静态“关键字并将”JFrame frame;“放在变量部分”......如果我这样做,那么public static void main(String[] args)将不会createAndShowGUI();方法和GUI不会显示

  3. 我尝试过使用actionPerformed方法:

    if(e.getSource()==enterButton){
    System.exit(0);
    }
    
  4. 和...

       if(e.getSource()==enterButton){
       frame.dispose();   //Cannot reference frame from static createAndShowGUI method
       }
    

    所以我不知所措,是否可以通过点击按钮关闭SplashScreen类?提前致谢

1 个答案:

答案 0 :(得分:0)

我从here获取了以下示例。也许你采用相同的方法,因为createAndShowGUI方法具有相同的名称...我通过一个按钮和一个适当的侦听器来扩展它,它配置了Frame。你的问题对我来说有点难以理解,但我认为这个例子会回答你的问题。

public class FrameDemo {
private static void createAndShowGUI() {
    final JFrame frame = new JFrame("FrameDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton button = new JButton("Exit");
    button.setPreferredSize(new Dimension(175, 100));
    frame.getContentPane().add(button, BorderLayout.CENTER);

    ActionListener buttonListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            frame.dispose();
        }
    };
    button.addActionListener(buttonListener);

    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}
}