Java JTextArea Hinzufügen newline
So, ich bin ratlos. Ich, aus irgendeinem Grund, scheinen, denken Sie daran, dass Java macht seltsame Dinge, wenn Sie versuchen, hinzufügen neuer Zeilen zu Stopfen... also denke ich, dass vielleicht hier das problem.
Dieser code funktioniert nicht, wie Sie es erwarten:
public void displayText(KeyEvent k){
txt = inputArea.getText();
outputArea.setText(txt);
if(k.getKeyCode() == 10) //return
outputArea.setText(txt + "\n");
}
Können Sie überprüfen, um zu sehen, wenn ich die getKeyCode() festlegen, um die richtige Zahl, aber ich bin mir fast sicher, dass das Teil korrekt ist.
BEARBEITEN:
Vielen Dank; ich vergaß über diese Konstanten...
Und leider funktioniert es aber nicht wirklich. if(k.getKeyCode() == k.VK_ENTER)
gibt true zurück, (das ist eine Tatsache), aber "\n" nicht den Zeilenumbruch.
BEARBEITEN (take two):
Vollständige code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame implements KeyListener{
private JFrame frame;
private JTextField inputArea;
private JTextArea outputArea;
private String txt;
public GUI(){
frame = new JFrame("My Frame");
inputArea = new JTextField(1);
outputArea = new JTextArea(5,10);
inputArea.addKeyListener(this);
outputArea.setLineWrap(true);
txt = "";
frame.setLayout(new GridLayout(2,10));
frame.add(inputArea);
frame.add(outputArea);
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void keyPressed(KeyEvent k){}
public void keyTyped(KeyEvent k){}
public void keyReleased(KeyEvent k) {
displayText(k);
}
public void displayText(KeyEvent k){
txt = inputArea.getText();
outputArea.setText(txt);
if(k.getKeyCode() == KeyEvent.VK_ENTER)
outputArea.append("\n");
//outputArea.setText(txt + "\n");
}
}
Dann eine weitere Klasse mit der main:
public class Driver {
public static void main(String[] args){
GUI gui = new GUI();
}
}
BEARBEITEN:
Im Grunde bin ich versucht zu emulieren Google Wave die Möglichkeit text zu versenden, bevor der Benutzer die EINGABETASTE drückt.
- Nicht sicher über Ihre Fehler, aber es wird im Allgemeinen bevorzugt, um verwendet KeyEvent.VK_ENTER statt vergleichen mit 10 direkt. Hier finden Sie weitere Konstanten: java.sun.com/j2se/1.5.0/docs/api/java/awt/event/KeyEvent.html
- Siehe meine aktualisierte Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
EDIT:, Nachdem ich sehen Sie Ihre vollständige code, den keylistener funktioniert. Das problem ist:
outputArea.setText(txt);
wer überschreibt deine Zeilenumbrüche. Probieren Sie etwas wie dieses:ORIGINAL ANTWORT: Versuchen Sie es mit getKeyChar() anstelle von getKeyCode(). Sehen http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/KeyEvent.html für Wann, was. Da Sie testen nur auf geben, Sie probarly nicht benötigen, um ein KeyListener. Sie können einen ActionListener auf das input-Feld statt. Siehe Beispiel-code für beide ActionListener und KeyListener Lösungen unten.
Ich weiß, es ist ein Unterschied mit neue-Zeile-Zeichen zwischen den OS ' s die es gibt. Sie könnten versuchen,
um die neue-Zeile-Zeichen für das bestimmte Betriebssystem ausgeführt wird. Weiß nicht, ob das dein problem lösen-oder nicht.
BEARBEITEN
Habe ich eine schnelle Stück code hinzufügen, um ein KeyListener auf eine JTextArea und dies funktioniert gut. Sie brauchen nicht besonders beobachten, für die Enter-Taste betätigt wird. Wie ist diese anders als der rest des Codes? (Wenn Sie mehr einfügen kann, das wäre hilfreich.) Ich habe irgendwie das Gefühl, dass Ihr KeyListener ist nicht etwas richtig. Sind die Buchstaben eingeben, wenn Sie geben? Versuchen Sie einfach nur nehmen aus der if-Anweisung, wo Sie überprüfen können, GEBEN Sie und sehen, ob das hilft.
Ich bin mir nicht sicher, ob ich verstehe, was Sie versuchen zu tun, alles was ich weiß ist, dass Sie mit dem falschen Ansatz. Sie sollte NICHT mit einem KeyListener.
Von dem, was ich sehen kann, Sie wollen den Inhalt der Ausgabe-text-Bereich der gleiche wie der Inhalt der Eingabe-Bereich. Wenn dies Ihre Anforderung, dann verwenden Sie einfach:
Oder wenn Sie versuchen, zu hören für alle änderungen, die für die Eingabe von text-Bereich, dann sollten Sie mit einem DocumentListener. Das Swing-tutorial ist ein Abschnitt mit dem Titel "How to Write a Document Listener" für weitere Informationen.