-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)コンソール操作の後に1秒追加してみてください。

于 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 に答える