Tartalomjegyzék
Java Konzol
- Szerző: Sallai András
- Copyright © Sallai András, 2014, 2019
- Licenc: GNU Free Documentation License 1.3
- Web: http://szit.hu
Képernyőtörlés
- Program01.java
class Program02 { private static final String ANSI_CLS = "\u001b[2J"; public static void main(String[] args) { System.out.println("Első"); System.out.print(ANSI_CLS); System.out.flush(); System.out.println("Második"); } }
(Linuxon Gnome terminálban nem működik a Runtime.getRuntime().exec(„clear”);)
Konzolos képernyőkezelés
A következő program bemutatja, hogyan kell karakteres felületen kurzort pozicionálni, képernyőt törölni és várakozni konzolon.
- Program01.java
class Program01 { public static void gotoxy(int x, int y) { char escCode = 0x1B; System.out.print(String.format("%c[%d;%df", escCode, y, x)); } public static void clear() { System.out.print("\u001b[2J"); System.out.flush(); } public static void wait(int time) { try{ Thread.sleep(time); // 1000 = 1s }catch(InterruptedException e){} } public static void main(String[] args) { gotoxy(10, 5); System.out.println("Hi"); wait(2000); clear(); System.out.println("22"); } }
Java jCurses
A jcurses nem része az JDK-nak, azt külön kell beszereznünk.
A működéshez szükség lesz a következő két fájlra:
- jcurses.jar
- libjcurses.so
Van egy libjcurses64.so fájl is. Ha ez is a jcurses.jar fájl mellett van, akkor hibásan a 64-bites állományt szeretné alapértelmezetten hívni, ezért ne legyen ott. Én az új programom könyvtárába másoltam a fenti két fájlt.
- Program01.java
import jcurses.system.CharColor; import jcurses.widgets.*; class Program01 { public static void main(String[] args) throws Exception { Window w = new Window(40, 20, true, "Helló Világ ablak"); DefaultLayoutManager mgr = new DefaultLayoutManager(); mgr.bindToContainer(w.getRootPanel()); mgr.addWidget( new Label("Helló Világ", new CharColor(CharColor.WHITE, CharColor.GREEN)), 0, 0, 40, 20, WidgetsConstants.ALIGNMENT_CENTER, WidgetsConstants.ALIGNMENT_CENTER); w.show(); Thread.currentThread().sleep(5000); // kilépés előtt 5 másodpercig várunk w.close(); // Vissza a natív konzlra } }
Fordítás:
javac -cp /home/joska/jcurses.jar Program01.java
Futtatás:
java -cp /home/joska/jcurses.jar:. Program01
Kellékek
A fontosabb beállítások táblázata:
Kulcs | Jelentés |
---|---|
„file.separator” | |
„java.class.path” | Class fájlokat tartalmazó JAR archívok és könyvtárak keresése Az elemek a platformnak megfelelő elválasztókkal vannak szeprálva, amely a path.separator változóban van megadva |
„java.home” | A Java Runtime Environment (JRE) telepítési könyvtára |
„java.vendor” | JRE terjesztő |
„java.vendor.url” | JRE terjesztő URL |
„java.version” | JRE verziószáma |
„line.separator” | Szöveges fájlokban a sorvégejel operációs rendszer szerint |
„os.arch” | Az operációs rendszer architektúrája |
„os.name” | Az operációs rendszer neve |
„os.version” | Az operációs rendszer verziószáma |
„path.separator” | Elválasztó karakter a java.class.path használata során |
„user.dir” | A használt munkakönyvtár |
„user.home” | A felhasználó saját könyvtára |
„user.name” | Felhasználónév |
A tulajdonságok olvasása:
System.getProperty("path.separator");
Az összes beállítás megjelenítése:
System.getProperties().list(System.out);
Tulajdonságok írása:
- Program01.java
import java.io.FileInputStream; import java.util.Properties; class Program01 { public static void main(String[] args) throws Exception { FileInputStream propFile = new FileInputStream( "beallitasok.txt"); Properties p = new Properties(System.getProperties()); p.load(propFile); // Rendszerbeállítások érvényesítése System.setProperties(p); // Új beállítások System.getProperties().list(System.out); } }
jLine
A jLine soros bevitel kezelésére találták ki konzolon. Mi most egy billentyű elkapására fogjuk használni. Tesztelve: XP és Linux rendszeren.
- Program01.java
import jline.ConsoleReader; import java.io.IOException; class Program01 { public static void main(String[] args) throws IOException { ConsoleReader cr = new ConsoleReader(); int kod; do { kod = cr.readVirtualKey(); System.out.printf("Kod: %d\n", kod); }while(kod!=0x1B); // Esc billentyű decimális 27, hexadecimálisan 1B } }
A mellékelt make fájl:
- Makefile
all: javac -cp .;jline-1.0.jar Program01.java
Szükséges hozzá a jline-1.0.jar vagy újabb verziója. Letölthető a következő oldalról:
- https://jline.github.io/ (2019)
Indításhoz:
- startProg.bat
java -cp .;jline-1.0.jar Program01
Indításhoz:
- startProg.sh
java -cp .:jline-1.0.jar Program01
Jansi
A jAnsi segítségével képernyőtörlés és kurzorpozicionálás megoldható:
- Program01.java
import org.fusesource.jansi.Ansi; import org.fusesource.jansi.AnsiConsole; import java.util.Scanner; class Program01 { public static void main(String args[]) { Scanner in = new Scanner(System.in); AnsiConsole.systemInstall(); Ansi ansi = new Ansi(); AnsiConsole.out().print(new Ansi().eraseScreen()); ansi.reset(); AnsiConsole.out().print(ansi); do { ansi.cursor(0, 40); AnsiConsole.out().print(ansi); AnsiConsole.out.print("Teszto"); ansi.cursor(5, 0); AnsiConsole.out().print(ansi); AnsiConsole.out.print("> "); ansi.cursor(5, 3); ansi.eraseLine(); AnsiConsole.out().print(ansi); String cmd = in.nextLine(); if(cmd.equals("vege")) break; }while(true); } }
Fordításhoz Makefile
- Makefile
all: javac -cp .;jansi-1.11.jar Program01.java
- startProg.bat
java -cp .;jansi-1.11.jar Program01
- startProg.sh
java -cp .:jansi-1.11.jar Program01
A működéshez szükséges a jansi-1.11.jar vagy újabb verziójú fájl. Letölthető innen: