从控制台获取输入后,不会出现Swing窗口

时间:2012-02-28 08:03:28

标签: java swing console jfilechooser event-dispatch-thread

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

这显示在课程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

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

感谢。

3 个答案:

答案 0 :(得分:2)

Becaue“scanning operation可能阻止等待输入,”我怀疑你阻止了event dispatch thread。而是使用File Chooser来获取文件引用。

答案 1 :(得分:1)

尝试在控制台操作后添加第二个mywindow.setVisible(true)

答案 2 :(得分:1)

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

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

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

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

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