解决:@Desolator在下面的注释中使我的编码完全可用
好的,所以我做了3个相互关联的类:
SplashScreen> ProjectAssignment> CompareSignature
我要谈论的课程是启动画面课程:
所以在这个课上我有3种方法:public static void createAndShowGUI()
-此方法包含用于创建和显示GUI的所有信息
-JFrame frame = new JFrame(“ Welcome!”);等等...public void actionPerformed(ActionEvent e)
-此方法使按钮i可以单击并打开下一个GUI
-if(e.getSource()== enterButton)等...public static void main(String[] args)
-此方法仅具有“ createAndShowGUI();”在其中,以便在运行代码时显示GUI
我需要做的是能够给JButton另一个动作,使其在单击时关闭SplashScreen类(来自createAndShowGUI
),但我的问题是:
我无法从actionPerformed方法中的JFrame frame = new JFrame("");
方法引用createAndShowGUI
,因为createAndShowGUI
方法是静态的
现在,您说的是“仅将“ static”关键字取出,并将“ 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类?提前致谢
最佳答案
我从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();
}
});
}
}