Вы можете использовать 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
, и это делает образованное предположение, хотите ли вы GUI или консоль, используйте java YourMainClass -mode console
, чтобы заставить режим консоли или java YourMainClass -mode gui
заставить графический режим.