Zugriff auf Java-Swing TextField aus einer anderen Klasse
Ich habe ein problem mit Java Swing text-Eingabe. Ich habe eine Methode inputData()
in der Klasse A
und wenn ich es nennen soll die Methode warten Sie, während Benutzer füllen TextField input
in der Klasse B
und drücken Sie die EINGABETASTE. Schließlich die Methode inputData()
sollte der text, der Benutzer geschrieben hat. Wie könnte ich es lösen?
class A {
B b = new B();
public A() {
inputData();
}
public char[] inputData() {
//there I would like to get text
//from TextField from class B
}
}
//-------------------------------
class B extends JFrame{
private JTexField input;
public B() {
}
private void inputKeyPressed(KeyEvent e) {
if (e.getKeyCode() == 10) { //pressed ENTER
input.getText()
input.setText(null);
}
}
}
InformationsquelleAutor Martynas | 2011-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht wollen, tatsächlich ein JTextField. Es klingt wie Sie warten, für eine Reihe von Eingaben von dem Benutzer, der sollte wirklich ein JOptionPane. Wie dies zu tun ist hier beschrieben:
http://download.oracle.com/javase/tutorial/uiswing/components/dialog.html#input
Grundsätzlich JOptionPane.showInputDialog() bewirkt, dass ein Fenster, um pop-up enthält ein Textfeld sowie die Schaltflächen OK/Abbrechen, und wenn Sie die EINGABETASTE drücken, wird es nehmen Sie Ihre Eingabe. Dies beseitigt die Notwendigkeit für eine andere Klasse.
Würden Sie es in Ihre inputData () - Methode:
Wenn das ist nicht, was Sie suchen, und Sie möchten ein text-Feld, die offen bleibt, ist vielleicht das, was Sie wirklich wollen, ist ein "Submit" - button neben Ihrem JTextField, die dem Benutzer ermöglicht zu entscheiden, Wann Sie senden Sie den text. In diesem Fall könnten Sie haben:
InformationsquelleAutor donnyton
TextField? Da es ein Swing-Projekt, ich hoffe, du meinst ein JTextField, richtig? Und fügen Sie nicht einen KeyListener, sondern einen ActionListener da diese werden ausgelöst, wenn der Benutzer die EINGABETASTE drückt. Eine Möglichkeit zur Lösung Ihres Problems zu geben, ist der GUI-Klasse (hier benannt B) eine öffentliche Methode, die es erlauben werden außerhalb von Klassen, fügen Sie ein ActionListener auf dem JTextField. Vielleicht können Sie nennen es addActionListenerToInput(ActionListener listener). Dann Eine Klasse hinzufügen kann, die Zuhörer zu B, und die actionPerformed-code aufgerufen wird, wenn die EINGABETASTE gedrückt wird.
z.B.,
InformationsquelleAutor Hovercraft Full Of Eels