Dav*_*idR 2 java swing jlabel jframe
我正在尝试创建一个java应用程序,并在使用Swing从用户获取一些输入数据后,我开始运行我的程序的主要计算块(不是主要的方法只是为了清楚).当这个方法运行时,我想显示"请等待......别碰任何东西"的内容.然而,问题是我用来显示这个的JPanel在方法持续时间内完全变黑正在进行计算的是.我试图在方法的中间打印JLabel.getText(),它按照预期出来.任何关于为什么文本不会出现的想法.以下是我的代码.
JFrame toDisplay = new JFrame("Please Wait");
toDisplay.setAlwaysOnTop(true);
toDisplay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
toDisplay.setVisible(true);
toDisplay.setLayout(new FlowLayout());
toDisplay.setSize(300,200);
toDisplay.setLocation((int)dimension.getWidth()/3, (int)dimension.getHeight()/3);
JLabel message = new JLabel("<html>CheapTix is currently running<br /> please do not close this box or open the file <br /> Destinations.txt <br /> until instructed to do so</html>");
toDisplay.add(message,BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)
接下来是我的程序的主要部分运行.我已经尝试将toDisplay.add(消息)放在我程序的主要部分内,但这似乎也没有用.任何帮助我都非常感激.
你的问题是由于Swing并发.您正在Swing事件线程上运行一个长时间运行的进程,这可以防止事件线程被绘制.解决方案:使用后台线程,例如SwingWorker.
有关这方面的更多信息,请参阅Swing中的Concurrency
也,
JFrame toDisplay = new JFrame("Please Wait");
toDisplay.setAlwaysOnTop(true);
toDisplay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
toDisplay.setVisible(true);
toDisplay.setLayout(new FlowLayout());
toDisplay.setSize(300,200);
toDisplay.setLocation((int)dimension.getWidth()/3, (int)dimension.getHeight()/3);
JLabel message = new JLabel("<html>CheapTix is currently running<br />
please do not close this box or open the file <br />
Destinations.txt <br />
until instructed to do so</html>");
toDisplay.add(message,BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
154 次 |
最近记录: |