Я уже работал над этой проблемой. Я использую несколько разных методов. Однако сложно иметь по-настоящему кросс-платформенное решение.
Я попытался сделать что-то вроде этого:
String os = System.getProperty("os.name").toLowerCase();
//Windows
if(os.contains("win")){
System.out.append("Windows Detected");
//set Windows Dos Terminal width 80, height 25
Process p = Runtime.getRuntime().exec("mode 80, 25");
}
//Mac
if(os.contains("mac")){
System.out.println("Macintosh Detected");
//... I dont know...try Google
}
//Linux
if(os.contains("linux")){
System.out.println("Linux Detected");
Вы можете читать / тестировать и добавлять «экспорт COLUMNS» в файл .bashrc в каждом домашнем каталоге Linux для Linux с помощью String .contains ("export COLUMNS") и свойство user.dir.
Это позволит вам загружать столбцы каждый раз при запуске приложения java.
Затем я передам его в файл temp. Например:
try {
ProcessBuilder pb = new ProcessBuilder("bash","-c","echo $COLUMNS >/home/$USER/bin/temp.txt" );
pb.start();
}catch (Exception e) {
System.out.println("exception happened - here's what I know: ");
e.printStackTrace();
System.exit(-1);
}
}
Другой вариант, который у вас есть, - выполнить yor Java.jar с помощью скрипта bash при запуске. Внутри скрипта вы можете использовать «tput cols» для получения ширины. Затем передайте это значение вашему Java-приложению как String [] arg.
Так вот:
//#!/bin/bash
//#clear the screen
clear
//#get the console width and height
c=$[$(tput cols)]
l=$[$(tput lines)]
//#pass the columns, lines and an optional third value as String[] args.
java -jar ~/bin/Plus.jar $c $l $1
почему эта сложная задача с Java? Очевидно, хорошее место для написания хорошего API. Думаю, мы могли бы попробовать Apache.commons.exec?