2009-08-10 10 views
0

コンソールモードとグラフィカルモードを切り替える方法があるかどうかを知りたかっただけです。私はスイングでJavaを使用しています。コンソールモードとグラフィカルモードの切り替え

シェルに何かを入力してコンソールモードにしてから、デスクトップに戻るために何かを入力できるかどうかを知りたいと思います。または、ブート時に何かキーを押すことができるかどうか、 私のサーバーをコンソールモードで動作させることですが、タスクをより簡単にしたいときはデスクトップを利用できます。

答えて

4

プロジェクトを2つに分けることができます。サーバーとGUIです。サーバーをサービス(Windows)デーモン(Linux)として実行することができます。また、GUIを使用するには、GUIを起動して操作する必要があります。

あなたはGUIを非表示にするコマンドを定義することができますプログラムでなどMlDonkey、Ettercap、などのアプリケーション

0

のようなIt's。 gui.setVisible(false)のような何かは、トリックを行う必要があります、それはGUIとそれのすべての要素によって参照されるウィンドウを非表示にします。

2

コマンドラインでパラメータを渡して、main(String[] args)で調べることができます。彼らはargsになります。したがって、最も簡単な方法は、args.length > 0 && "-c".equals (args[0])を確認して、プログラムにコンソールモードで実行するように指示し、それ以外の場合はUIを開くことです。

もう1つの方法は、(異なるクラスの)2つのmain()メソッドを書き、正しいものを使用することです。

5

あなたはあなたのプログラムがサポートするGUIを実行しているか、されていない環境かどうかを確認するためにjava.awt.GraphicsEnvironment.isHeadless()を使用することができます。

public static void main(String[] args){ 
    if (GraphicsEnvironment.isHeadless()){ 
     // Run console mode 
    } else { 
     // Start in GUI mode 
    } 
} 

私があなただったらあなたができるので、しかし、私は、このコマンドラインスイッチを作ると思いますグラフィック環境でもコンソールモードを使用してください。

public static void main(String[] args){ 
    final List<String> arguments = Arrays.asList(args); 
    final int modeIndex = arguments.indexOf("-mode"); 
    final String mode = modeIndex == -1 ? "auto" : argument.get(modeIndex); 
    if ("auto".equals(mode)) runAuto(); 
    else if ("console".equals(mode)) runConsole(); 
    else if ("gui".equals(mode)) runGui(); 
    else System.err.println("Bad mode: " + mode); 
} 

private static void runGui(){ ... } 
private static void runConsole(){ ... } 
private static void runAuto(){ 
    if (GraphicsEnvironment.isHeadless()) runConsole(); 
    else runGui(); 
} 

(TODO::、エラー処理を追加します。魔法の文字列リテラルを削除し、最大の利便性のために、これは次のように、isHeadlessチェックを使用しています「自動」オプションのいくつかの種類にどのデフォルトは非必須オプションになりますGUIモードを強制的にコンソールモード、またはjava YourMainClass -mode guiを強制的にjava YourMainClass -mode consoleを使用するなど)

ので、java YourMainClassjava YourMainClass -mode autoを使用してプログラムを起動し、それはあなたがGUIまたはコンソールをしたいかどうかを推測します。

0

GUIウィザードを起動するコマンドラインコマンドを作成して、必要なコンポーネント/構成を簡単に作成し、複雑な命令を単一のアプリケーションスレッドに戻すことができます。 GUIコンポーネントを使用した後に破棄するか、または単に非表示にしておくと便利かどうかは、GUIコンポーネントの使用頻度に関する決定です。

関連する問題