Czyszeczenie konsoli

0

w Jaki sposob wyczyscic konsole w javie??

znalazlem jakis fragment kodu ale podkresla clear(); ze nie ma tej metody.

Próbuje napisać program który jak wykona pewna czynność to wyczyści konsole

import java.lang.*;
import java.io.Console;

public class Main {
        public void ClearConsole() {
                Console console = System.console();        
                if (console == null)
                        System.out.println("Couldn't get Console object !");
                console.clear();
        }
    
        public static void main(String[] args) {
                new Main().ClearConsole();
        }
}
0

Niestety, podkreśla ci że nie ma tej metody bo nie ma tej metody :)
Java nie wspiera takiej operacji bo w rozumieniu wejścia/wyjścia Javy nie ma czegoś takiego jak wyczyszczenie konsoli. Jednak ten problem możesz rozwiązać na kilka sposobów:

  1. Wywołując metodę systemową czyszczenia konsoli (clear lub cls)

  2. Wywołując taki kod:

for(int i=0; i<25; ++i)
    System.out.println();
System.out.flush();

:)

0

nie da sie wyczyscic konsole, mozna tylko przewijac.
pod windows masz do tego ScrollConsoleScreenBuffer, wlasnie z tego kozysta cls wypelniajac sb bajtami 0x00, 0x20 (spacja).

aha, i nie kozystaj w wyjscia by to osiagnac, bo to debilizm.
funkcje konsolowe to zupelnie inna sprawa niz funkcje io. konsola jest tylko jednym z wielu mozliwych wyjsc.
jesli java nie udostepnia funkcji do operacji na konsoli - to znaczy ze nie da sie tego zrobic i musisz napisac wlasna konsole (stworzyc wlasne okno, co zreszta polecam, szczegolnie pod win, bo konsola tu to smiec).
oczywiscie NIE wykonuj clear/cls tylko po to by wyczyscic konsole, to tez zle swiadczy o programiscie.

0
hg8768 napisał(a)

aha, i nie kozystaj w wyjscia by to osiagnac, bo to debilizm.

Poczułem się co najmniej dotknięty tą wypowiedzią. Nie będę się tutaj odgryzał bo uważam że należy reprezentować jakiś poziom. Tak zdaję sobie sprawę, że de facto konsola jest zgoła czym innym niż System.out. Śmiem jednak twierdzić panie hg8768, że pana wypowiedź jest co najmniej nie na temat. Na pytanie "jak wyczyścić konsolę?" odpowiada pan

hg8768 napisał(a)

musisz napisac wlasna konsole (stworzyc wlasne okno, co zreszta polecam, szczegolnie pod win, bo konsola tu to smiec)

Zdaję sobie sprawę, że jest to rozwiązanie dosyć nieeleganckie no i nie jest to czyszczenie konsoli "wprost". Zapewniam jednak że stanowcza większość przypadków to wywoływanie programu bez przekierowań strumienia wyjścia poza konsolę. Poza tym co w sytuacji gdy ze względu na ograniczenia sprzętowe w JRE nie ma dostępu do X? Jak wtedy zrobić "własną konsolę".
Następnym razem proszę nie używać słowa debilizm w kierunku mojego posta

0

Zapewniam jednak że stanowcza większość przypadków to wywoływanie programu bez przekierowań strumienia wyjścia poza konsolę.

takim tokiem rozumowania nie powinno sie obslugiwac bledow, gdyz wiecej razy funkcja fykona sie prawidlowo. Przekierowanie io jest udokumentowana metoda, jest to mala czesc dzialania OS, i programista musi sie dostosowac. mie ma bata, nie wolno kombinowac bo z programu wyjdzie smiec.

Jak wtedy zrobić "własną konsolę".

A pod x nie ma przypadkiem odpowiednika ScrollConsoleScreenBuffer()? Oj wydaje mi sie ze jest cos takiego. Nie pisalem sporo pod linuxa jesli chodzi o gui wiec nie podam rozwiazania.
Ale mysle ze java ma universalna klase do obslugi konsoli. Jesli nie ma, to sie nie da tego zrobic.

No ale tak czy inaczej, nie wolno zakladac ze stdout to konkretny typ pliku. mozna to sprawdzic jakas funkcja typ handla stdout, ale nawet jak bedzie to konsola, to bedziesz musial poznac jej rozmiary, monitorowac kazda zmiane, i dostosowac swoj program do jej rozmiarow. No i jest przeciez mozliwosc (legalna) ze program zmieni stdout, pod linuxem jest to afair realizowane przez dup2(), a pod windows SetStdHandle(). A tego hooknac nie mozna, wiec zostajesz z niewiadoma.

Jak juz wspomnialem, pod windows tego sie nie da zrobic, bo nie ma metody na synchroniczny hook eventow konsoli. Pod linux - nie wiem.

Reasumujac rysowanie po konsoli to prymitywne operacje GUI. Czy warto z tego kozystac? Pod linuxem pewnie tak, pod windowsem - stanowczo nie.
Lepiej operowac albo na czystym stdin/out/err, albo na czystm GUI. Rysowanie po konsoli jak dziala, to tylko pod linuxem.

Czyli program wypluwa tylko informacje, ktore sa pozyteczne dla usera, albo zajmuje sie rysowaniem okien jezeli wazna jest forma.

funkcje konsolowe dzialaja tylko pod linuxem, choc i tak nie jestem tego pewien. wiec odpowiedz na temat watku - [b]nie uzywac konsoli jako CUI w java[/b].

1 użytkowników online, w tym zalogowanych: 0, gości: 1