Zum Inhalt springen

Java Consolen Fenster


Empfohlene Beiträge

Geschrieben

Bevor du an das Deployement gehst würde ich zuallererst mal die Grundprinzipien der Hochsprachen-Programmierung erlernen, das ist viel wichtiger. Eins könnte noch von Interesse sein: Es gibt keinen Unterschied zwischen dem Programm, welches du manuell in der IDE starten kannst und dem, welches man später in ner JAR an Leute verschicken kann .... andernfalls wären das Prinzip von Java ziemlich zerstört :upps

Der beste Anfang sieht so aus: Datentypen kennenlernen & testen, Fehlerausgaben kennenlernen und verstehen, Variablen, Klasse, Methoden usw ... keinesfalls von "Ausgabe" zu "JAR-Packages" springen, das zerreisst dir die Lernkurve, so wird ganz schnell aus x² dann -x² :eek

Geschrieben

Ich wollt fragen wie ich eine Java Console öffne. also im script, damit ich dort was drinen ausgeben kann.

Du musst die JAR-Datei Assoziation von 'javaw' auf 'java' ändern. Javaw öffnet keine Console. Mir ist leider auch kein Weg bekannt eine Console zu öffnen, wenn keine verfügbar ist. Hoffe das bringt dich etwas voran. Ansonsten:

Wenn du deine jar Datei via java -jar tollerName.jar startest dann kannst du auch die Ausgaben sehen.

Gruß

Geschrieben (bearbeitet)

Ich habe in meinem JavaCPC Emulator die Java-Konsole umgeleitet:

package jemu.ui;


/**

 * Title:        JEMU by cpc.devilmarkus.de / jemu.winape.net

 * Description:  JAVA emulator for Amstrad Homecomputers

 * Copyright:    Copyright (c) 2002-2008

 * Company:

 * @author       Devilmarkus

 * @version 4.0

 * 

 * 

 */


import java.io.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;


import javax.swing.border.*;


public class Console extends WindowAdapter implements WindowListener, ActionListener, Runnable

{

	public static JFrame frameconsole;

	private JTextArea textArea;

	private Thread reader;

	private Thread reader2;

	private boolean quit;

		JButton button=new JButton("Clear");

		JButton button2=new JButton("Copy");


	private final PipedInputStream pin=new PipedInputStream(); 

	private final PipedInputStream pin2=new PipedInputStream(); 


	public Console()

	{

		// create all components and add them

		frameconsole=new JFrame("JavaCPC Console");

		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();

		Dimension frameSize=new Dimension((int)(screenSize.width/2),(int)(screenSize.height/2));

		int x=(int)(frameSize.width/2);

		int y=(int)(frameSize.height/2);

		frameconsole.setBounds(x,y,500,500);


		textArea=new JTextArea();

		textArea.setEditable(true);

                textArea.setAutoscrolls(true);

                textArea.setBackground(Color.BLACK);

                textArea.setForeground(Color.GREEN);

                textArea.setCaretColor(Color.WHITE);

                textArea.setSelectedTextColor(Color.RED);

                textArea.setSelectionColor(Color.ORANGE);

                textArea.setBorder(new BevelBorder(BevelBorder.LOWERED));

                textArea.setFont(new Font("", 1, 10));

                button.setForeground(Color.RED);

                button.setBackground(Color.DARK_GRAY);

                button.setBorder(new BevelBorder(BevelBorder.RAISED));

                button.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));

                button2.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));

                button2.setForeground(Color.YELLOW);

                button2.setBackground(Color.DARK_GRAY);

                button2.setBorder(new BevelBorder(BevelBorder.RAISED));

		frameconsole.getContentPane().setLayout(new BorderLayout());

		frameconsole.getContentPane().add(new JScrollPane(textArea),BorderLayout.CENTER);

		frameconsole.getContentPane().add(button2,BorderLayout.NORTH);

		frameconsole.getContentPane().add(button,BorderLayout.SOUTH);

                frameconsole.setAlwaysOnTop(true);

		frameconsole.setVisible(false);		


		frameconsole.addWindowListener(this);		

		button.addActionListener(this);		

		button2.addActionListener(this);

                button.setFocusable(false);

                button2.setFocusable(false);


		try

		{

			PipedOutputStream pout=new PipedOutputStream(this.pin);

			System.setOut(new PrintStream(pout,true)); 

		} 

		catch (java.io.IOException io)

		{

			textArea.append("Couldn't redirect STDOUT to this console\n"+io.getMessage());

		}

		catch (SecurityException se)

		{

			textArea.append("Couldn't redirect STDOUT to this console\n"+se.getMessage());

	    } 


		try 

		{

			PipedOutputStream pout2=new PipedOutputStream(this.pin2);

			System.setErr(new PrintStream(pout2,true));

		} 

		catch (java.io.IOException io)

		{

			textArea.append("Couldn't redirect STDERR to this console\n"+io.getMessage());

		}

		catch (SecurityException se)

		{

			textArea.append("Couldn't redirect STDERR to this console\n"+se.getMessage());

	    } 		


		quit=false; // signals the Threads that they should exit


		// Starting two seperate threads to read from the PipedInputStreams				

		//

		reader=new Thread(this);

		reader.setDaemon(true);	

		reader.start();	

		//

		reader2=new Thread(this);	

		reader2.setDaemon(true);	

		reader2.start();


        System.out.println("JavaCPC by Devilmarkus");

        System.out.println("Feel free to use this console as notepad, too...");

	}




	public synchronized void windowClosing(WindowEvent evt)

	{

		frameconsole.setVisible(false); // default behaviour of JFrame	

		frameconsole.dispose();

	}


	public synchronized void actionPerformed(ActionEvent evt)

	{

                if (evt.getSource() == button) {

		textArea.setText("JavaCPC by Devilmarkus\nconsole cleared...\n");

                } 

                if (evt.getSource() == button2) {

		textArea.selectAll();

                textArea.copy();

                System.out.println("Console content copied to clipboard.");

                } 

	}


	public synchronized void run()

	{

		try

		{			

			while (Thread.currentThread()==reader)

			{

				try { this.wait(100);}catch(InterruptedException ie) {}

				if (pin.available()!=0)

				{

					String input=this.readLine(pin);

					textArea.append(input);

                                        textArea.select(2000000000, 2000000000);

				}

				if (quit) return;

			}


			while (Thread.currentThread()==reader2)

			{

				try { this.wait(100);}catch(InterruptedException ie) {}

				if (pin2.available()!=0)

				{

					String input=this.readLine(pin2);

					textArea.append(input);

                                        textArea.select(2000000000, 2000000000);

				}

				if (quit) return;

			}			

		} catch (Exception e)

		{

			textArea.append("\nConsole reports an Internal error.");

			textArea.append("The error is: "+e);			

		}



	}


	public synchronized String readLine(PipedInputStream in) throws IOException

	{

		String input="";

		do

		{

			int available=in.available();

			if (available==0) break;

			byte b[]=new byte[available];

			in.read(;

			input=input+new String(b,0,b.length);														

		}while( !input.endsWith("\n") &&  !input.endsWith("\r\n") && !quit);

		return input;

	}				

}[/code]




In der Main-Klasse rufe ich nun diese Konsole auf:

[code].......... public void start() { .......... new Console(); ........
Die Konsole läuft also im Hintergrund... Anschliessend, wenn ich die Konsole öffnen will:
Console.frameconsole.setVisible(true);

Ich hoffe, das hilft...

Edit:

console.png

So schaut das Ergebnis aus.

Es hat ein Design und 2 Knöpfe:

- Konsole leeren

- Inhalt in die Zwischenablage kopieren

- Ausserdem kann man die Konsole für Notizen verwenden (Finde ich nützlich)

Bearbeitet von Devilmarkus
  • 11 Monate später...
Geschrieben

@roota

Was hat das mit dem Thema zu tun? Das gehört in einen neuen Thread!

Zum Problem:

Probiere statt "\n" mal System.getProperty("line.separator").

Vllt. geht das ja.

Ach übrigens: Die for-Schleife ist doch total unnötig.

Grüße, JasonDelife.

Geschrieben

mh das geht auch nicht, beim Ausgeben kopiert der alles automatisch nochmal, das aufteilen in die einzelnen Zeilen ist auch damit net möglich!

Ich möchte eigentlich nur die zuletzt eingegebene Zeile auslesen! :( Den String vergleichen und damit einen Funktionsaufruf starten!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...