Вы можете использовать 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.