prøv med: // HVP -- Horizontal and Vertical Position ESC [ Pn ; Pn f // Erase to End of Screen ESC J går til øverste venstre hjørne og sletter så derfra (alt)
men jeg ved ærligtalt ikke om det duer til et java-vindue. prøv
olly: man kan godt køre system kommandoer fra Java, men det er naturligvis ikke en løsning der virker alle steder da de afhænger af operativsystemet: Runtime.getRuntime().exec( "ls *" );
Det man sådan styrer via runtime skal vist helst være noget der ikke er 'ejet' af java-programmet (der bliver i de fleste OS'er sat properties for at undgå det kan ske).
Jeg har selv fundet en metode, som sletter skærmen. En escape karakter, som virker i DOS/Windows i hvert fald. public void clSc() { System.out.println("\033c"); }
public void clScreenAnsi() { System.out.println("\033[1;1f\033J"); } der er større sandsynlighev for at den virker i Linux, unix osv PS: jeg tror linie/bogstavnumre starter fra 1; men hvis øverste linie ikke slettes skal det være:
System.out.println("\033[0;0f\033J");
hvis den ikke virker i windows skal der evt sendes en "\033<" først. Eller bare din "\033c" istedet
olly: hvis cls sletter et vindue i dos/windows skulle det virke, den eneste årsag til at det ikke skulle virke er hvis ikke du har startet programmet fra en dos shell, men fra et eller andet environment. For at se hvad der er galt kan du tilføje følgende kode: Process p = Runtime.getRuntime().exec( "cls" ); InputStream pin = p.getErrorStream(); InputStreamReader cin = new InputStreamReader( pin ); BufferedReader in = new BufferedReader( cin ); String s; if ( ( s = in.readLine() ) != null ) { System.out.println( "Det virkede ikke"); System.out.println( s ); while ( ( s = in.readLine() ) != null ) { System.out.println( s ); } } else { System.out.println( "Det virkede." ); }
Det var startet fra dos... Naturligvis under NT4/Win2k/XP da jeg ikke vil røre det lort til win9x (Og helst slet ikke Windows). Og der virker det ikke!
Den er den fejl jeg får når jeg tilføjer de manglende try-catch til din kode. Og jf. java.sun.com er der fordi du ikke kan kører interne doskomandoer med exec.
olly: det var jo ikke så godt. Så må du nok forsøge at smide nogle escape karakterer ud som foreslået ovenfor, men det vil næppe være garanteret til at virke alle steder.
Det er nu ikke fordi spørgsmålet er så svært, men der findes ikke en enkelt løsning der er platformsuafhængig, ikke mindst fordi der i nogle tilfælde ikke er en konsol forbundet med en kørende process.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.