-1

私の教授は、GUI を介してシミュレーションを実行するプロジェクトを割り当てました。それを編集するには、「新規」メニュー項目を作成する必要があります。GUI からデータを取得する方法を学んでおらず、私たちの本ではそれについてまったく説明していません。

私がやろうとしているのは、「新規」コマンドがヒットすると、フォーカスが System.out.out である CMD プロンプトに戻ることです。再び作業を開始し、ユーザーに入力を求めます。

ただし、これを実装しようとすると、プログラムがクラッシュします。この問題を解決するにはどうすればよいですか?

4

4 に答える 4

0

私はそれが非常に遅い答えであることを知っていますが、どこでも...

やりたいことを正確に実行する方法は 1 つしかありません。

  1. 最初に、java -jar jarname.jar によって CMD からプロジェクトを実行することを忘れないでください。
  2. クリック アクションをキャッチして system.in を実行する

情報:

GUI が CMD にフォーカスを与えることはないため、これが唯一の解決策ですが、CMD から GUI を実行すると、System.in を簡単に使用できます。

よろしく、 グレッグ

于 2012-09-15T11:36:12.060 に答える
0

System.out は端末 (非 Java) ウィンドウにありますか? もしそうなら、これはあなたが思っているよりもはるかに難しいと思います。

System.in / System.out を GUI 上の JTextPane にリダイレクトしたくなるでしょう (そうすれば、フォーカスなどを変更する方がはるかに簡単になります。自分が何をしているのかを試して説明する必要があると思います)あなたの質問では少し良くなり、プログラムがクラッシュしたときにスタックトレースを投稿する可能性があります。

とにかく、「新しい」メニュー項目がクリックされたときに何かを行うには、次のことを行う必要があります。

menuItem.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
       // Code here to be performed when the item is clicked
   }
});
于 2008-12-08T21:37:12.487 に答える
0

新しく作成した GUI への参照を保持しているようには見えません。私が覚えている限りでは、そのオブジェクトへの参照がない場合、Java は FoxGui オブジェクト (およびその他のオブジェクト) をガベージ コレクションします。新しく作成した FoxGui オブジェクトへの参照を格納するグローバル変数を作成してみてください。何かのようなもの...

FoxGui MyGUIRef;
public void actionPerformed(ActionEvent event) 
{ 
    System.out.println("Item: " + event.getActionCommand());

    // File Menu Controls
   if (event.getActionCommand().equals("New"))
   {
       MyGUIRef = runNew();
   }
}

//Now returns a reference to FoxGui
private FoxGui runNew()
{
     return new FoxGui(....)
}
于 2008-12-08T21:46:49.520 に答える
0

あのね?本当に簡単な解決策、JOptionPane を見つけました。良い例を見つける必要がありました。それは私が望むもののためにうまくいくでしょう。すべての助けをありがとう。助けてくれた人全員にチェックマークを付けます。

于 2008-12-08T22:00:35.717 に答える