gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:50:37 27 4
gpt4 key购买 nike

已解决:@Desolator 已让我的代码在下面的评论中完全正常工作

好的,所以我创建了 3 个类,它们都相互链接:

启动画面 > 项目分配 > CompareSignature

我想谈论的类是闪屏类:

所以在这个类中我有 3 个方法:

public static void createAndShowGUI() - 此方法保存用于创建和显示 GUI 的所有信息 - JFrame 框架 = new JFrame("欢迎!");等等...

public void actionPerformed(ActionEvent e) - 此方法使我能够单击按钮并打开下一个 GUI - if(e.getSource()==enterButton) 等...

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

我需要做的是能够在单击时为 JButton 提供另一个操作来关闭 SplashScreen 类(来自 createAndShowGUI),但我的问题是:

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

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

  3. 我尝试放入 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();
}
});
}
}

关于Java 难题 - 尝试在单击按钮后处理 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15040164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com