2

CHARVA (ncurses のような Swing) を使用していますが、問題があります。

charva は Swing と非常によく似ているため、Swing のソリューションは charva と同じだと思います。

JFrame-extended クラスを呼び出し、リターン コードを取得し、リターン コードにJFrame応じて他のウィンドウを表示するアプリケーションを開発しています。

それはのようなものです:

public static void main() {
MainFrame mainframe=new MainFrame();
mainframe.show();
switch (mainframe.returncode) {
       case "generalsetting": Frame1 frame1=new Frame1;
       frame1.show();
       break;
       case "usersetting": Frame2 frame2=new Frame2;
       frame2.show();
       break;

などしかし、私がするとき:

mainframe.show();

メインフレームが閉じられるか非表示になるまでプログラムは待機しませんが、「スイッチ」を続行すると、リターン コードが初期化されず、プログラムがクラッシュします。

「ブロック」する方法はありshow()ますか?

4

2 に答える 2

4

ブロッキング呼び出しを実行したい場合は、モーダルJDialogの代わりにモーダルを使用してみてください: コンストラクターでforパラメーターをJFrame使用するだけです( JDialogを参照) 。truemodal

ただし、CharvaはわかりませんがJFrame.show()、Java 1.5以降は非推奨です(setVisible(true)代わりに使用する必要があります)。

于 2014-04-02T20:53:04.340 に答える
3

「ブロッキング」show() を使用する方法はありますか?

はい。代わりにMainFrame拡張してモーダルにすることができます:JDialogJFrame

class MainFrame extends JDialog {
    //code...
}

System.out.println("Before");
MainFrame d = new JDialog();
d.setModal(true);
d.setVisible(true);
System.out.println("After");
于 2014-04-02T20:54:12.927 に答える