Eigenes Konsolenfenster

Ch3ck3r

Mitglied
Guten Abend,


ich versuche ein eigenes Konsolenfenster mit JTextArea und JTextField zu erstellen.
Ich habe bereits die GUI erstellt und System.out und System.err werden erfolgreich in meine JTextArea "umgeleitet".

Unter der TextArea befindet sich ein einzeiliges JTextField, mit dem ich Text eingeben kann.
Diese Eingabe wollte ich zuerst an System.in umleiten, doch habe schnell gemerkt, dass dies wohl nicht möglich ist.

Diese Konsolenoberfläche muss im endeffekt mit einem Programm zusammenarbeiten, in dem folgende Methode ausgeführt wird.
Java:
public Parser() 
    {
        commands = new CommandWords();
        reader = new Scanner(System.in);
    }

    /**
     * @return The next command from the user.
     */
    public Command getCommand() 
    {
        String inputLine;   // will hold the full input line
        String word1 = null;
        String word2 = null;

        System.out.print("> ");     // print prompt

        inputLine = reader.nextLine();
        System.out.println(inputLine);
        // Find up to two words on the line.
        Scanner tokenizer = new Scanner(inputLine);
        if(tokenizer.hasNext()) {
            word1 = tokenizer.next();      // get first word
            if(tokenizer.hasNext()) {
                word2 = tokenizer.next();      // get second word
                // note: we just ignore the rest of the input line.
            }
        }

        // Now check whether this word is known. If so, create a command
        // with it. If not, create a "null" command (for unknown command).
        if(commands.isCommand(word1)) {
            return new Command(word1, word2);
        }
        else {
            return new Command(null, word2); 
        }
    }

Damit dieses Programm mit meiner Obefläche funktioniert habe ich Scanner(System.in) geändert. Nun steht dort nicht mehr System.in sondern mein eigener Input Stream der eigentlich meine Eingabe tragen soll.

Das sieht jetzt so aus:
Java:
// Klasse, die mein Konsolenfenster erzeugt, gekürzt
	private PipedOutputStream output;
	private PrintWriter writer;
	private InputStream in;
	private JTextField inputArea;
public Output() {	    
	output = new PipedOutputStream();
        writer = new PrintWriter(output);
        try {
            in = new PipedInputStream(output);
        } catch(IOException e) {
        }

        // ERZEUGUNG DER GUI
        // Das Eingabefeld ist in inputArea gespeichert
}

public synchronized void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_ENTER) {
                 String data = inputArea.getText();
                 inputArea.setText("");
                 writer.println(data);
        }
    }
	
public InputStream getInput() {
	    return this.in;
	}

Und im Parser
Java:
    public Parser(Console console) 
    {
        commands = new CommandWords();
        reader = new Scanner(console.getInput());
    }

Es gibt keine Fehlermeldung, doch die Eingabe kommt nicht im Scanner an.

Wäre für jeden Hinweis offen :)
 
Zuletzt bearbeitet:

madboy

Top Contributor
Java:
} catch(IOException e) {
}
Da darfst dich nicht wundern, wenn keine Exceptions ausgegeben werden :)
Java:
} catch(IOException e) {
e.printStackTrace();
}
wäre geeigneter.
 

Ch3ck3r

Mitglied
Hi, danke für den Hinweis,
aber auch mit e.printStackTrace() wird kein Fehler ausgeworfen. Wenn ich mit System.out.println() den inputStream ausgebe ist er auch vorhanden
Code:
java.io.PipedInputStream@da9ea4

Kann es daran liegen, dass writer.println() im Event-Thread stattfindet und Scanner.readLine() im hauptthread?
 
Zuletzt bearbeitet:

Ch3ck3r

Mitglied
Ich habe jetzt die GUI und den Parser so umgeschrieben, dass sie nicht mehr mit Input/Outputstreams arbeiten sondern mit einer BlockingQueue, mit der es einwandfrei läuft.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
G eigenes package Java Basics - Anfänger-Themen 3
Anfänger2011 Eigenes Betriebssystem Java Basics - Anfänger-Themen 6
P Eigenes Fenster erstellen Java Basics - Anfänger-Themen 5
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
P eigenes Equal mit IndexOf() Java Basics - Anfänger-Themen 5
L eigenes Steuerelement Zeitstrahl Java Basics - Anfänger-Themen 3
F Eigenes Package - Variable exportieren Java Basics - Anfänger-Themen 11
GianaSisters Methoden eigenes TableModel -> removeRow möglich machen Java Basics - Anfänger-Themen 30
D Eigenes Event beim TimeOut Java Basics - Anfänger-Themen 2
D Packages verwenden und in eigenes Projekt integrieren Java Basics - Anfänger-Themen 3
B Eigenes Package Java Basics - Anfänger-Themen 6
S Eigenes Objekt temporär verändern? (Clone)? Java Basics - Anfänger-Themen 12
M Eigenes Programm Flaechenrechner Java Basics - Anfänger-Themen 8
L Eigenes List Model für Icon + String -> Speicherhungrig? Java Basics - Anfänger-Themen 8
X Eigenes Kontosystem vervollständigen Java Basics - Anfänger-Themen 11
Developer_X eigenes ImageIcon schreiben Java Basics - Anfänger-Themen 11
Q Eigenes Event feuern Java Basics - Anfänger-Themen 5
S Eigenes Kontextmenü Java Basics - Anfänger-Themen 3
I jar in eigenes Programm unwandeln (OSX und Win) Java Basics - Anfänger-Themen 4
R Eigenes Pair Object Java Basics - Anfänger-Themen 2
C eigenes TableModel Java Basics - Anfänger-Themen 2
data89 In Java ein eigenes Lexikon erstellen? Doch wie? Java Basics - Anfänger-Themen 5
GilbertGrape Eigenes Event? Java Basics - Anfänger-Themen 2
K javadoc eigenes doclet in console starten Java Basics - Anfänger-Themen 3
B Eigenes Event schreiben Java Basics - Anfänger-Themen 7
M Eigenes Ellipse2D-Objekt Java Basics - Anfänger-Themen 5
G Eigenes Fenster Java Basics - Anfänger-Themen 51
N Eigenes Icon in InputDialog geht nicht! Java Basics - Anfänger-Themen 7
J Eigenes Symbol für Java Programm Java Basics - Anfänger-Themen 3
M Eigenes Seitenformat definieren Java Basics - Anfänger-Themen 2
Q Eigenes TableModel - NullPointerException Java Basics - Anfänger-Themen 6
F eigenes Package Java Basics - Anfänger-Themen 2
B Package/Klasse in ein eigenes Projekt einbinden? aber wie? Java Basics - Anfänger-Themen 6
B .bat - Datei starten ohne Konsolenfenster zu sehen Java Basics - Anfänger-Themen 6
A Weitere Konsolenfenster öffnen Java Basics - Anfänger-Themen 3
V Java Starten ohne Konsolenfenster. Java Basics - Anfänger-Themen 5
D Konsolenfenster nicht da? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben