переключение между режимом консоли и графическим режимом - PullRequest
0 голосов
/ 10 августа 2009

Я просто хотел узнать, есть ли какой-нибудь способ переключения между режимом консоли и графическим режимом. Я использую Java на качелях.

Я хотел бы знать, могу ли я что-то набрать в оболочке, чтобы перейти в режим консоли, а затем набрать что-нибудь, чтобы вернуться на рабочий стол. Или если я могу нажать какую-то клавишу во время загрузки, или что-то еще. Идея состоит в том, чтобы заставить мой сервер работать в режиме консоли, но иметь рабочий стол, когда я хочу легче выполнять свои задачи.

Ответы [ 5 ]

5 голосов
/ 10 августа 2009

Вы можете использовать java.awt.GraphicsEnvironment.isHeadless(), чтобы проверить, поддерживает ли среда, в которой работает ваша программа, графический интерфейс:

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

На вашем месте я бы сделал это переключателем командной строки, чтобы вы могли использовать режим консоли и в графической среде. Для максимального удобства это будет необязательный параметр, который по умолчанию установлен на какой-то вариант «авто», использующий проверку isHeadless, например:

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: добавить обработку ошибок, удалить магические строковые литералы и т. Д.)

Итак, запустите вашу программу с java YourMainClass или java YourMainClass -mode auto, и она сделает обоснованное предположение, хотите ли вы использовать графический интерфейс или консоль, используйте java YourMainClass -mode console для включения режима консоли или java YourMainClass -mode gui для включения режима GUI.

4 голосов
/ 10 августа 2009

Вы можете разделить проект на две части: сервер и графический интерфейс. Вы можете запустить свой сервер как службу (Windows) или демон (Linux), а когда вам нужен графический интерфейс, вы должны запустить его и работать с ним.

Это такие же приложения, как MlDonkey, Ettercap и т. Д.

2 голосов
/ 10 августа 2009

Вы можете передать параметры в командной строке и просмотреть их в main(String[] args). Они окажутся в args. Таким образом, самый простой способ - это проверить args.length > 0 && "-c".equals (args[0]), чтобы заставить программу работать в консольном режиме, и в противном случае открыть пользовательский интерфейс.

Другой вариант - написать два main() метода (в разных классах) и использовать правильный.

0 голосов
/ 10 августа 2009

Вы можете создать команду командной строки, которая запускает мастер графического интерфейса, который позволяет вам легко создавать нужные компоненты / конфигурацию, а затем включить графический интерфейс для передачи сложной инструкции обратно в ваш отдельный поток приложения. Является ли полезным уничтожение компонента GUI после его использования или просто его скрытие, - это решение, которое вам придется принять в отношении того, как часто вы будете использовать компонент GUI.

0 голосов
/ 10 августа 2009

В программе вы можете определить команды, чтобы скрыть графический интерфейс. Что-то вроде gui.setVisible(false) должно сработать, оно скрывает окно, на которое ссылается gui, и все его элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...