-1

我有一个简单的摆动窗口来加载文件。

这出现在类analyzedLoad中,在一个函数中analyzedloads()

JFileChooser fc = new JFileChooser();
JFrame frame = new JFrame();
int returnVal = fc.showOpenDialog(frame);
frame.dispose();
if (returnVal == JFileChooser.APPROVE_OPTION) {

我在没有用户输入的情况下应用该功能,一切都很好。但是在我从用户那里得到输入的地方,以这种方式:

    int al= 0;
     Scanner in = new Scanner(System.in);
       System.out.println("for choose file, press 1; for save, press 2");
       al= in.nextInt();
       if (al== 1){
        analyzedLoad.analyzedloads(); // A static function which open the swing window

窗口不出现,进程继续运行,不做任何事情。

谢谢。

4

3 回答 3

2

因为“扫描操作可能会阻塞等待输入”,我怀疑您正在阻塞事件调度线程。而是使用文件选择器来获取文件参考。

于 2012-02-28T11:16:00.380 回答
1

尝试mywindow.setVisible(true)在控制台操作后添加一秒钟。

于 2012-02-28T08:05:51.167 回答
1

您可能想尝试将analyzeLoad变量声明为final并执行以下操作:

SwingUtilities.invokeLater(new Runnable()
{
    @Override
    public void run()
    {
         analyzedLoad.analyzedloads();
    }
}

或者因为该方法是静态的:

    SwingUtilities.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
             YourClass.analyzedloads();
        }
    }

话虽如此,没有更多代码我们只能推测。

于 2012-02-28T08:17:22.060 回答