立即绘制JFrame

Zer*_*Guy 2 java swing

我有class LevenbergForm extends JFrame一个功能calculate().

一般来说,for在该函数中有一个循环,在每次迭代中我需要创建一个循环new JFrame,显示它并等到按下按钮.

我得到的问题JFrame是没有绘制它的组件.里面都是白色的.只有在calculate()结束时才会画出来.

JFrame当我还在那个for循环中时如何画画?

如何阻止它直到button按下?(可选的)

void calculate(boolean stepByStep) {
    for (int i = 0; i < n; ++i) {
        //...
        graph = new JFrame();
        graph.setContentPane(chartPanel);
        graph.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        graph.pack();
        graph.setVisible(true);
        graph.setLocationRelativeTo(null);
        //Draw JFrame and stop for loop until button pressed          
        //...   
    }
}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 7

不要使用在创建和显示时是非阻塞的JFrame.而是使用一个模态对话框,例如JOptionPane,它阻止当前线程的流程,直到它被处理完毕.

话虽如此,你的是一个不方便且可能令人讨厌的程序设计.为什么不简单地使用Swing Timer来改变显示的JLabel文本的状态?

  • @Zergay:绝对的.第二个参数是一个对象参数,您可以传入带有绘图的JPanel或带有图片的ImageIcon. (2认同)