Java konsola

herbatek
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Rzeszów
  • Postów:71
0

Hej, mam pytanie co do zwykłej konsoli w Javie. Otóż, używając Scanner'a mogę łatwo pobierać dane wejściowe z konsoli - z tym, że zawsze muszę zatwierdzić je enterem.
Czy jest możliwość czytania z konsoli klawisza bez zatwierdzania go ? Ponieważ chciałbym zrobić proste menu w stylu

opcja a
opcja b
opcja c

strzałkami (góra, dół) wybrać interesującą mnie opcję i zatwierdzić ją enterem.
Wiem, że w c++ była taka możliwość, a w Javie nigdy się z tym nie spotkałem.

Darth Bane
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 dni
  • Postów:30
1

Nie, chyba że są jakieś dodatkowe biblioteki do konsoli (typu ncurses w c/c++).
Ewentualnie użycie np. Swinga i udawanie konsoli.


~(...) siła przetrwania musi pochodzić z wnętrza. Inni zawsze zawiodą. Przyjaciele, rodzina, towarzysze broni... w ostatecznym rozrachunku każdy zostaje sam. W potrzebie zawsze szukaj pomocy w sobie. ~Głosić moralność jest łatwo, uzasadnić trudno.
edytowany 1x, ostatnio: Darth Bane
zyxist
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:101
0

Tak, jest taka możliwość: System.in oraz System.out to zwykłe strumienie i możesz na nich pracować przy pomocy tych samych narzędzi, co np. przy czytaniu danych z pliku. Wtedy można napisać taki kawałek kodu, który zaczeka na pojawienie się na wejściu dowolnego znaku i od razu przekaże Ci wtedy sterowanie.

Natomiast jeśli chodzi o rysowanie menu, to muszę Cię trochę rozczarować. Da się to zrobić, ale wyłącznie poprzez wysyłanie odpowiednich kodów sterowania terminalem na System.out (zgodnych ze specyfikacją ANSI X3.64). Java nie posiada żadnych wbudowanych narzędzi do obsługi tekstowego ekranu a'la karty graficzne z lat 80-tych (np. 80x25, swobodny dostęp do komórek), bo po co?

Znalazłem jedną bibliotekę inspirowaną starym tekstowym systemem okien Turbo Vision autorstwa Borlanda i zgodnie z informacjami na stronie projektu, rendering jest tam oparty albo o pisanie na standardowe wyjście System.out, albo o... emulację trybu tekstowego przy pomocy Swinga: https://github.com/klamonte/jexer


edytowany 1x, ostatnio: zyxist
jarekr000000
Takie programy rysujące ascii menu w konsoli powinny być od jakiegoś czasu zakazane jakąś konwencją genewską. Również w C/C++.
rubaszny_karp
przecież konsolowe programy z gui w ASCII są SUPCIO !!! #RETRO !!! OMG
jarekr000000
Przeczekałem tą całą głupią epokę MS-DOS i Nortona Commandera, pierwszego PC-ta kupiłem dopiero po premierze Windows 95, jak już można było pisać pod Win32 API i allokować więcej niż 64kb pamięci na raz.
jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

chciałbym zrobić proste menu w stylu

To co jest proste na jednym systemie operacyjnym i jednym sofcie - na drugim jest nie do przejścia. Zauważ, jak wiele programów ma menu takie, że masz listę ponumerowanych opcji i wybierasz wpisując ten numer i naciskając enter. Na przykład instalator linuxa. Tak więc proponuję - dostosuj się do platformy. Chcesz mieć strzałki - tryb graficzny. Chcesz mieć tryb tekstowy - wybierz coś prostego do realizacji. Jak zrobisz poprawny program, to nikt się nie będzie czepiał, że nie chodzą strzałki.


Przeważnie ignoruję niezarejestrowanych użytkowników.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.