Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:java:java_konzol

< Java

Java Konzol

  • Szerző: Sallai András
  • Copyright © Sallai András, 2014, 2019
  • Licenc: GNU Free Documentation License 1.3

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:

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:

Linkek

oktatas/programozas/java/java_konzol.txt · Utolsó módosítás: 2019/08/21 23:32 szerkesztette: admin