java - 使用 Java 关闭 GUI

标签 java swing user-interface jframe

import javax.swing.JFrame;


public class Driver00

{

   public static void main(String[] args)

   {
        /*Create a frame (outside box) and write what text 
   will be displayed as the frame title*/ 
      JFrame frame = new JFrame("Casino Blackjack");
      JFrame frame2 = new JFrame("Rules and Information");
      //allows JFrame to be maximiazed on open
      frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
      frame2.setExtendedState(JFrame.MAXIMIZED_BOTH);

   //give frame a size
     // frame.setSize(2000,2000);

   //set location on the computer screen will frame appear
      //frame.setLocation(200, 150);

    //use this so when you press X in corner, frame will close
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       //frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   //Add your panel to the frame. name must match Panel class name
      frame.setContentPane(new PanelProject());
      frame2.setContentPane(new Rules());

   // always include
      frame.setVisible(true);
      frame2.setVisible(true);
   }
}

这是启动 GUI 的应用程序,我的问题是,如果我不注释掉 frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 行,然后单击 x 按钮,它会关闭 frameframe2。反之亦然。如果我没有注释掉具有 frame 而不是 frame2 的同一行,并且单击 x 按钮,则会关闭两个框架。

我希望能够关闭框架或另一个框架,而不必担心两个框架都被关闭。

最佳答案

"I would like to be able to close on frame or the other without having to worry about both frames being closed."

首先,您需要查看 The Use of Multiple JFrames, Good/Bad Practice? 。需要强调的是,大多数选民都倾向于“坏”一方。

话虽如此,您应该考虑框架的语义。即打开另一个框架仅用于游戏说明。这看似合理,但如果你理解 modality ,您可能会同意,对于在这种情况下使用辅助框架,模式 JDialog 会更合适,因为当指令对话框打开时,主游戏框架的交互将被阻止。查看更多How to Make Dialogs

如果您不想使用两个单独的窗口,另一个选择是使用 CardLayout。这将允许您在 View 之间交换。因此,当提示说明时,游戏将移出 View ,而说明将移入 View 。反之亦然。您可以在How to use CardLayout查看更多信息。另请参阅一个简单的示例 here

关于java - 使用 Java 关闭 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23417749/

相关文章:

java - 使用 JProgressBar 将数组内容复制到 JTextArea 的进度

java - 如何创建自动发票,无需生成 jtextfield

java - 如何锁定JFrame?

user-interface - 如何测试网站的UI?

java - Hadoop - 如何收集没有值的文本输出

java - 如何检查它是否绘制(java 游戏)

java - java判断两个表达式是否等价

java - 如何在 MySQL 的列中添加数据但某些字符串已经设置?

java - 如何增加JavaFX中ScrollPane的滚动效果?

Python:GUI - 绘图,从实时 GUI 中的像素读取