2013-02-21 11 views
5

Chcę wyczyścić ekran w mojej aplikacji Java, po przeczytaniu wielu pytań i googlowania, znalazłem poniższy kodco jest Runtime.getRuntime(). Exec („swoisty odpowiednik domena CLS”) dla systemu Windows 7

runtime.getruntime().exec("cls") 

lub

Runtime.getRuntime().exec("cmd /c cls"); 

ale powyższy kod nie działa w systemie Windows 7. Jestem świadomy „CLS” skrypt jest domena specyficzna, czy ktoś wie co to tekst powinien używać w systemie Windows 7. będzie bardzo pomocny, z góry dziękuję.

+0

Czy pojawiły się jakieś błędy? – aksappy

+0

Łatwiej byłoby po prostu napisać sekwencje specjalne ANSI dla "Home" i "Clear to EOS" do System.out. – EJP

+0

@askappy Myślę, że dostałem, ponieważ polecenie nie działa. – Radan

Odpowiedz

1

Zdaję sobie sprawę, że szukasz łatwego sposobu na wyczyszczenie ekranu. Będziesz musiał użyć hack nowej linii lub użyć konsoli obsługującej ANSI. Tutaj jest trochę trudniejsza metoda tylko dla systemu Windows przy użyciu JNA, którą ty lub inni czytelnicy mogą rozważyć. To jest przykład instruktażowy. Dodaj błąd sprawdzania/obsługi/przywozu/zawiera w razie potrzeby. Musisz już wiedzieć, jak używać JNA. Jeśli jesteś nowy w JNA, jest to dobry pierwszy program do wypróbowania.

//------------------------------------------ 
// Java2Win.class 
//------------------------------------------ 
public interface Java2Win extends Library { 
    Java2Win java2Win = (Java2Win)Native.loadLibrary("Java2Win64",Java2Win.class); 
    void cls(); 
} 
//------------------------------------------ 

//------------------------------------------ 
// Java2Win.c (Java2Win.dll & Java2Win64.dll) 
//------------------------------------------ 
JNIEXPORT void cls() { 
    system("cls"); 
} 
//------------------------------------------ 

//------------------------------------------ 
// Test 
//------------------------------------------ 
public static void main(final String args[]) throws Exception { 
    final File file = new File("rootToDLL", "Java2Win64.dll"); 
    LibraryLoader.loadLibrary(file); 
    System.out.println("-----some output"); 
    System.out.println("-----some output"); 
    System.out.println("-----some output"); 
    Thread.sleep(2000); 
    Java2Win.java2Win.cls(); 
    System.out.println("-----cleared"); 
} 
//------------------------------------------ 
2

Od cls jest polecenie wewnętrzne (coś cmd.exe robi się raczej niż nazywając program wykonywalny), można zrobić to z:

cmd /c cls 

To działa prawidłowo w systemie Windows 7, przy założeniu, że faktycznie uruchomiona aplikacja typu konsola.

+0

Spróbuję tego, ale wygląda na jedną z wielu kombinacji, których próbowałem wcześniej. – Radan

+0

Runtime.getRuntime(). Exec ("cmd/c cls"); Praca dint otrzymała wyjątek IO jak zwykle. – Radan

+1

@Radan Musisz przekazać parametry jako tablicę ciągów, zobacz: http://stackoverflow.com/questions/3608944/adding-parameters-to-runtime-getruntime – lbalazscs

Powiązane problemy