当前位置: 首页 > 知识库问答 >
问题:

而不是使用jframe实现执行循环

养俊驰
2023-03-14

所以基本上我有一个公共的静态空main方法,它创建一个框架和一个级别,级别是一个面板,然后添加到jframe中,但在代码之后似乎不会检查我在main中的time循环,我知道它没有,因为只要框架是可见的,我的time循环就应该被检查,如果它到达这一点而它没有,它应该在控制台窗口中打印一行。任何帮助都将不胜感激!同样是的,我知道打印行会弹出一个控制台窗口窗口,而不是实际上把它放在框架中,我为此而声明了一个单独的函数,我只是使用println进行调试。

public class Main extends JFrame 
{
  public static void main(String[]args)
  {
  System.out.println("LevelStart");
  LevelOne l = new LevelOne();
  //Level Two not made yet just a place holder to show constructor with a different type
  LevelTwo l2 = new LevelTwo();
  //I make l2 first because the front frame is the last one created
  Main m = new Main(l2);
  Main m2 = new Main(l);
  //To switch levels i am going to load them all in advance and then when the beat the level it will close the frame


  while (m2.isVisible())
   {
      System.out.println("If this displays something is wrong with my checkWin method"); 
      if(l.checkWin())
     {
       System.out.println("If this displays something is wrong with my checkWin method");

     }  
    }
   }
  }

共有2个答案

徐弘图
2023-03-14

你不需要一段时间的循环。Swing是事件驱动的,一旦创建并使JFrame可见,框架将保持打开状态,直到用户关闭框架。

此外,如果您需要子窗口,那么您应该使用JDialog,而不是另一个JFrame。

阅读Swing教程中关于如何制作框架的部分,了解一个简单的示例,让您开始学习。

洪华皓
2023-03-14

while循环违反了Swing线程规则,应该删除。

无论如何,你的程序设计应该得到改进。您不应该创建新的JFrame对象,而是应该创建一个使用CardLayout的JPanel,使用JPanel将所有级别的JPanel添加到这个CardLayout,在添加级别时使用唯一的字符串常量。然后,您可以通过调用适当的CardLayout方法轻松地交换级别,或者next(…) 显示(…)

 类似资料:
  • 我对Java编码非常陌生,我已经研究这个问题大约4天了。我正在做一个选择你自己的结局故事。当我到达第69行时,如果读者选择是,我希望系统重新开始故事,如果他们选择否,则结束程序。我不确定我是否正确地编码了while循环,或者我甚至可以使用中断;操作员就像我在使用它一样。对不起,我的代码太难看了,哈哈,我正在努力变得更好。感谢您的建议! }

  • 问题内容: 我也在学习Java和android。我们可以在while循环中执行的几乎所有事情都可以在while循环中执行。 我发现一个简单的条件,使用while循环比for循环更好 如果我必须在程序中使用counter的值,那么我认为while循环要比for循环好 使用while循环 在这种情况下,我发现while循环要比for循环好,因为如果要在for循环中实现相同的效果,则必须将counter

  • 问题内容: 如何在不冻结程序的情况下用Java执行进程?我已经尝试过使用SwingWorker,但是我还不太了解它是如何工作的。 我还有其他方法可以做到这一点吗?我想在我的JDroidLib中使用类似的东西。有关完整的源代码,请查看GitHub:http : //github.com/Team-M4gkBeatz/JDroidLib 提前致谢! 编辑: 感谢您的回答。但是我有一个带有几种方法的类(

  • 在Spring Boot Admin(SBA)Server上注册后,客户端的一些执行器使用而不是。为什么它将endpoint更改为HTTP,而不留在HTTPS?它是可定制的吗? 这里有一些日志和Java /YML-Files. 日志: 应用yml(服务器): SpringBootAdmin应用程序。java(服务器): 应用yml(客户):

  • 我需要在我的服务器上运行函数 但是由于安全原因被禁用,但是PHP执行函数正在运行和。 是否可以使用php函数执行相同的操作? 禁用功能 链接,符号链接,执行,通过,proc_close,proc_get_status,proc_open,shell_exec,系统,流行,关闭

  • 我想使用Java8的流api进行以下练习: 给定 是一个简单的POJO,具有name(string)和age(int)属性 构造以下字符串