Java拼图-尝试在单击按钮后处理GUI

Java拼图-尝试在单击按钮后处理GUI,java,swing,jframe,jbutton,actionevent,Java,Swing,Jframe,Jbutton,Actionevent,已解决:@sailator已在下面的评论中完全使用了我的编码 好的,我制作了3个类,它们都相互链接: SplashScreen>项目分配>比较签名 我想说的是splashscreen类: 因此,在本课程中,我有3种方法: publicstaticvoid createAndShowGUI() -这种方法保存了创建和显示GUI的所有信息 -JFrame=newjframe(“欢迎!”);等等 public void actionPerformed(ActionEvent e) -此方法使按钮i能够

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

好的,我制作了3个类,它们都相互链接:

SplashScreen>项目分配>比较签名

我想说的是splashscreen类:

因此,在本课程中,我有3种方法:

publicstaticvoid createAndShowGUI()
-这种方法保存了创建和显示GUI的所有信息 -JFrame=newjframe(“欢迎!”);等等

public void actionPerformed(ActionEvent e)
-此方法使按钮i能够被单击并打开下一个GUI -如果(例如getSource()==enterButton)等

publicstaticvoidmain(字符串[]args)
-此方法中只包含“createAndShowGUI();”,以便在运行代码时显示GUI

我需要做的是能够给JButton另一个操作,以便在单击时关闭SplashScreen类(从
createAndShowGUI
),但我的问题是:

  • 我不能引用
    JFrame=newjframe(“”)来自actionPerformed方法中的
    createAndShowGUI
    方法,因为
    createAndShowGUI
    方法是静态的

  • 现在你说的是“只需去掉“static”关键字并放置“JFrame;“在变量部分”…如果我这样做,那么
    公共静态void main(String[]args)
    将不会使用
    createAndShowGUI()方法,GUI将不显示

  • 我已尝试使用actionPerformed方法:

    if(e.getSource()==enterButton){
    System.exit(0);
    }
    
  • 而且

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

    所以我很困惑,是否可以通过点击按钮来关闭SplashScreen类?提前感谢

    我从中选取了以下示例。可能您采用相同的方法是因为
    createAndShowGUI
    方法具有相同的名称。。。我通过一个按钮和一个适当的侦听器来扩展它,该侦听器处理帧。你的问题对我来说有点难理解,但我认为这个例子可以回答你的问题

    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();
            }
        });
    }
    }
    

    你能证明这个洞的等级代码吗?(如果它足够小)为了更快地获得更好的帮助,发布一个。@或者当然,我现在会编辑这篇文章,它有72行长,所以不是一个大文件,谢谢我没有看到这个编码beofre,但这几乎是解决方案,当我看到它时,我兴奋了一点,但是当我引用我的按钮时,它不能从静态类内部被引用,我的按钮是JButton enterButton;在顶部page@tombannister关于您的更新:在
    SplashScreen1
    的构造函数中创建JFrame。这将把
    从静态上下文移动到实例。