2009-08-10 7 views
0

Je voulais juste savoir s'il existe un moyen de basculer entre le mode console et le mode graphique. J'utilise Java sur swing. Je voudrais savoir si je peux taper quelque chose dans le shell pour passer en mode console, puis taper quelque chose pour revenir au bureau. Ou si je peux appuyer sur une touche au démarrage, ou quelque chose. L'idée est de faire fonctionner mon serveur en mode console, mais j'ai un bureau disponible quand je veux faciliter mes tâches.commutation entre le mode console et le mode graphique

Répondre

4

Vous pouvez diviser le projet en deux: le serveur et l'interface graphique. Vous pouvez exécuter votre serveur en tant que service (Windows) ou démon (Linux) et lorsque vous voulez l'interface graphique, vous devez lancer et utiliser avec lui.

comme des applications comme une manière mldonkey, Ettercap, etc.

0

Dans le programme, vous pouvez définir des commandes pour masquer l'interface graphique. Quelque chose comme gui.setVisible(false) devrait faire l'affaire, il cache la fenêtre référencée par gui et tous les éléments de celui-ci.

2

Vous pouvez passer des paramètres sur la ligne de commande et les examiner dans main(String[] args). Ils finiront dans args. Donc, le plus simple est de vérifier args.length > 0 && "-c".equals (args[0]) pour dire au programme de fonctionner en mode console et d'ouvrir une interface utilisateur autrement.

Une autre option consiste à écrire deux méthodes main() (dans différentes classes) et d'utiliser la bonne.

5

Vous pouvez utiliser java.awt.GraphicsEnvironment.isHeadless() pour vérifier si l'environnement dans lequel votre programme est en cours d'exécution ou non supports interfaces graphiques:

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

Si je vous étais, bien, je ferais ce commutateur de ligne de commande afin que vous puissiez utilisez aussi le mode console dans les environnements graphiques. Pour plus de commodité maximale, ce serait une option non obligatoire qui est par défaut à une sorte d'option « auto », qui utilise le contrôle isHeadless, comme:

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: Ajouter le traitement des erreurs, supprimer les chaînes littérales magiques, etc.)

Alors, commencez votre programme avec java YourMainClass ou java YourMainClass -mode auto et il fait une supposition si vous voulez GUI ou console, utilisez java YourMainClass -mode console pour forcer le mode console ou java YourMainClass -mode gui pour forcer le mode GUI.

0

Vous pouvez créer une commande de ligne de commande démarrant un assistant graphique qui vous permet de créer facilement les composants/la configuration souhaités, puis permettre à l'interface utilisateur graphique de renvoyer l'instruction compliquée dans votre thread d'application unique. S'il est utile de détruire le composant de l'interface graphique après l'avoir utilisé, ou tout simplement masqué, c'est une décision que vous devrez prendre, en ce qui concerne la fréquence à laquelle vous utiliserez le composant de l'interface graphique.

Questions connexes