1.) Den Frame erst sichtbar machen, wenn die Komponenten hinzugefügt wurden.
2.) Das System.out.println(t.getText()); bringt and dieser Stelle nichts, weil in dem TextFeld zu dieser Zeit ja noch nichts eingtragen wurde
3.) Layout Manager verwenden (hier FlowLayout)
Code:
public static void main(String[] args) {
JFrame f = new JFrame( "Fenster" );
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
JTextField t = new JTextField( 5);
t.setSize(100,17);
f.add(t);
JButton b = new JButton( "Ende" );
b.setSize(100,20);
f.add( b );
ActionListener al = new ActionListener() {
public void actionPerformed( ActionEvent e ) {
System.out.println(t.getText());
System.exit( 0 );
}
};
b.addActionListener( al );
f.setSize( 500, 200 );
f.setVisible( true );
}
Ich rate dir das GridBagLayout genau anzuschaun. Hier gibt es einen Thread wo kurz erklärt wird welche Argumente was machen: GridBagConstraints
Null-Layout ist zwar recht einfach, jedoch wirst du Probleme bekommen wenn sich das Fenster vergrößert und für genau diese Sachen sind die Layout-Manager gedacht!
NullLayout ist vor allem problematisch, wenn das Fenster verkleinert wird, so gehen bei einer Änderung der Fenstergröße u. U. Elemente verloren bzw. werden nicht angezeigt.
GridBagLayout ist für Anfänger nicht gerade das einfachste, wenn es auch durchaus eine praktikable Lösung ist. Ich würde zunächst den Vorschlag von Verjigorm prüfen, ob das Verschachtel von Layouts nicht ausreichend für Dich ist.
Warum kann ich nicht etwas ins feld eintragen und die Eingabe wieder unten ausgeben?
Hier mein Programm:
Code:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.*;
import javax.swing.JLabel;
public class Test {
/**
* @param args
*/
public static String str="";
public static void main(String[] args) {
// TODO Auto-generated method stub
final JFrame f = new JFrame( "Window" );
f.setLayout(null);
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setLayout(null);
final JTextField t = new JTextField( 5);
t.setSize(100,17);
t.setLocation(10,20);
f.add(t);
final JButton b3 = new JButton( "Einfügen" );
b3.setSize(100,17);
b3.setLocation(10,40);
f.add(b3);
final JLabel tf = new JLabel(str);
tf.setSize(100,20);
tf.setLocation(30,80);
f.add(tf);
ActionListener al = new ActionListener() {
public void actionPerformed( ActionEvent e ) {
str=t.getText();
}
};
b3.addActionListener( al );
f.setSize(300,200);
f.setVisible(true);
}
}