已解决:@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
),但我的问题是:
我无法在actionPerformed方法中引用JFrame frame = new JFrame("");
方法createAndShowGUI
,因为createAndShowGUI
方法是静态的
现在你说“只需取出”静态“关键字并将”JFrame frame;“放在变量部分”......如果我这样做,那么public static 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类?提前致谢
答案 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();
}
});
}
}