Hallo liebe Java-Spezialisten,
ich bin gerade dabei ein Programm für die Uni zu schreiben und hänge jetzt schon seit mehreren Stunden vor einem Problem, dass ich nicht schön gelöst bekomme.
Ein Teilprogramm soll die Eingabe des Nutzers in ein JTextField einlesen und speichern. Der Nutzer muss 2 Eingaben tätigen: Name und Ort.
Ich habe einen ActionListener zum JButton "Speichern" hinzugefügt, der die Eingabe "name" einließt und speichert. Nachdem das passiert ist, soll sich aber das Event des ActionListeners ändern und nicht mehr den "Namen" einlesen, sondern den "Ort". Geht das so? Ist ein anderer Ansatz evtl. besser?
Es geht mir halt darum so wenig Zeilen wie mgl. zu schreiben, weshalb ich nicht 2. separate Fenster (JFrames) erstellen wollte (also eins für den Namen und eins für den Ort)
Ich nehme gerne jeden Tipp an!
Vielen lieben Dank!
ich bin gerade dabei ein Programm für die Uni zu schreiben und hänge jetzt schon seit mehreren Stunden vor einem Problem, dass ich nicht schön gelöst bekomme.
Ein Teilprogramm soll die Eingabe des Nutzers in ein JTextField einlesen und speichern. Der Nutzer muss 2 Eingaben tätigen: Name und Ort.
Ich habe einen ActionListener zum JButton "Speichern" hinzugefügt, der die Eingabe "name" einließt und speichert. Nachdem das passiert ist, soll sich aber das Event des ActionListeners ändern und nicht mehr den "Namen" einlesen, sondern den "Ort". Geht das so? Ist ein anderer Ansatz evtl. besser?
Es geht mir halt darum so wenig Zeilen wie mgl. zu schreiben, weshalb ich nicht 2. separate Fenster (JFrames) erstellen wollte (also eins für den Namen und eins für den Ort)
Ich nehme gerne jeden Tipp an!
Vielen lieben Dank!
Java:
public class Abfragen extends JFrame {
private String name;
private String ort;
public Abfragen(){
this.name = "";
this.ort = "";
erstelleFenster();
}
public void erstelleFenster(){
JFrame fenster = new JFrame();
fenster.setTitle("Studiengangsinformationen");
// Inhalt (Fenster 1: Frage nach name):
JPanel inhalt = new JPanel();
JLabel ueberschrift = new JLabel("<html><i>Studiengangsname:</b><html>");
JLabel frage = new JLabel("Wie lautet der Name des Studienganges?");
JTextField eingabe = new JTextField(25);
JButton speichernB = new JButton("Speichern");
inhalt.add(ueberschrift);
inhalt.add(frage);
inhalt.add(eingabe);
inhalt.add(speichernB);
fenster.setContentPane(inhalt);
// durch Speichern oder Enter drücken, wird Eingabe gespeichert und eine neue Frage gestellt:
ActionListener speichernName = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Speichern des Studiengangsnamen:
name = eingabe.getText();
System.out.println(name);
// neue Frage (ort):
ueberschrift.setText("<html><i>Studiengangsort:</b><html>");
frage.setText("An welcher Hochschule oder Universität studierst du?");
eingabe.setText("");
speichernB.removeActionListener(speichernName);
eingabe.removeActionListener(speichernName);
// Speichern des ortes:
ActionListener speichernOrt = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ort = eingabe.getText();
System.out.println(ort);
fenster.dispose();
}
};
}
};
speichernB.addActionListener(speichernName);
eingabe.addActionListener(speichernName); //auch bei Enter Taste drücken wird gespeichert
fenster.setSize(400,400);
fenster.setMinimumSize(new Dimension(200,300));
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setVisible(true);
}
public static void main(String[] args) {
JFrame fenster = new Abfragen();
fenster.setAlwaysOnTop(true);
}
}