Guten Morgen,
ich habe eine GUI gebaut. Da ich alles sehr umständlich programmiert habe (zu viele Klassen), habe ich irgendwann Probleme mit den ActionListenern bekommen. Grundsätzlich hat es aber funktioniert.
Ich möchte das Ganze nun einfacher gestalten. Bei meiner Suche bin ich auf diesen Code gestoßen:
ActionEvent und ActionListener
In der Form möchte ich das auch mal probieren und meine GUI mit dem ActionListener testen. Ich erkenne keinen Fehler / Unterschied. Das Programm läuft auch, es passiert aber nichts, wenn ich den bestätigenBtn drücke. Eigentlich sollte er doch in der TextArea den vorgegebenen Text anzeigen?
Was mache ich falsch? Ich habe auch .append probiert oder System.out.println() aber er tut rein gar nichts. Später sollen dann über actionPerformed komplexe Methoden aufgerufen werden. Aber wenn nicht einmal eine Textausgabe klappt…
Wahrscheinlich irgendein dummer Anfängerfehler. Ich komme aber nicht dahinter.
Vielen Dank für Eure Tipps.
Hier ist mein bisheriger Code dazu:
[JAVA=42]
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class BeispielListener extends JFrame implements ActionListener {
JButton bestätigenBtn;
JButton verwerfenBtn;
JTextArea fehlerAusgabeArea;
JPanel bestätigenPanel;
public BeispielListener() {
this.setTitle("Verschnittbörse");
this.setSize(1350, 630);
setLayout(new GridLayout(2,1));
JPanel eingabePanel = new JPanel();
eingabePanel.setBackground(Color.BLUE);
JPanel bestätigenPanel = new JPanel();
bestätigenPanel.setBackground(Color.RED);
add(eingabePanel);
add(bestätigenPanel);
//Eingabe-Panel
JPanel p1 = new JPanel();
p1.setBackground(Color.GREEN);
p1.setBorder(BorderFactory.createTitledBorder("BASISDATEN"));
JPanel p2 = new JPanel();
p2.setBackground(Color.YELLOW);
JPanel p3 = new JPanel();
p3.setBackground(Color.ORANGE);
JPanel p4 = new JPanel();
p4.setBackground(Color.PINK);
eingabePanel.setLayout(new GridLayout(1,4));
eingabePanel.add(p1);
eingabePanel.add(p2);
eingabePanel.add(p3);
eingabePanel.add(p4);
//Panel p1
JLabel bezeichnungLabel = new JLabel("Bezeichung: ");
JLabel artLabel = new JLabel("Art: ");
JLabel artLabel2 = new JLabel("<html><body>(Geben Sie V für Verschnitt<br>oder P für Produkt ein.)</body></html>");
JLabel materialLabel = new JLabel("Material: ");
final JTextField bezeichnungField = new JTextField(8);
// Array für JComboBox
String comboBoxListe1[] = {"-","V","P",};
//JComboBox mit Material-Einträgen wird erstellt
final JComboBox artAuswahl = new JComboBox(comboBoxListe1);
// Array für JComboBox
String comboBoxListe2[] = {"-", "DC01", "DC03","DC04", "DC05", "DC06", "DC07", "DD11", "DD12", "DD13", "DD14", "DX51D", "DX52D", "DX53D", "DX54D", "DX55D", "DX56D", "DX57D", "DX58D",};
//JComboBox mit Material-Einträgen wird erstellt
final JComboBox materialAuswahl = new JComboBox(comboBoxListe2);
p1.setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
//// First column /////////////////////////
gc.anchor = GridBagConstraints.LINE_END;
gc.weightx = 0.5;
gc.weighty = 0.5;
gc.gridx = 0;
gc.gridy = 0;
p1.add(bezeichnungLabel, gc);
gc.gridx = 0;
gc.gridy = 1;
p1.add(artLabel, gc);
gc.gridx = 0;
gc.gridy = 3;
p1.add(materialLabel, gc);
//// Second column
gc.anchor = GridBagConstraints.LINE_START;
gc.gridx = 1;
gc.gridy = 0;
p1.add(bezeichnungField, gc);
gc.gridx = 1;
gc.gridy = 1;
p1.add(artAuswahl, gc);
gc.gridx = 1;
gc.gridy = 2;
p1.add(artLabel2, gc);
gc.gridx = 1;
gc.gridy = 3;
p1.add(materialAuswahl, gc);
//Bestätigen-Panel
final JTextArea fehlerAusgabeArea = new JTextArea(18, 85);
final JButton bestätigenBtn = new JButton("Eingaben bestätigen");
final JButton verwerfenBtn = new JButton("Eingaben verwerfen");
bestätigenBtn.addActionListener(this);
verwerfenBtn.addActionListener(this);
bestätigenPanel.add(fehlerAusgabeArea);
bestätigenPanel.add(bestätigenBtn);
bestätigenPanel.add(verwerfenBtn);
this.add(bestätigenPanel);
}
public static void main (String[] args) {
BeispielListener bl = new BeispielListener();
bl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bl.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == this.bestätigenBtn) {
fehlerAusgabeArea.setText(("Bestätigen-Button wurde betätigt"));
}
}
}
[/code]
ich habe eine GUI gebaut. Da ich alles sehr umständlich programmiert habe (zu viele Klassen), habe ich irgendwann Probleme mit den ActionListenern bekommen. Grundsätzlich hat es aber funktioniert.
Ich möchte das Ganze nun einfacher gestalten. Bei meiner Suche bin ich auf diesen Code gestoßen:
ActionEvent und ActionListener
In der Form möchte ich das auch mal probieren und meine GUI mit dem ActionListener testen. Ich erkenne keinen Fehler / Unterschied. Das Programm läuft auch, es passiert aber nichts, wenn ich den bestätigenBtn drücke. Eigentlich sollte er doch in der TextArea den vorgegebenen Text anzeigen?
Was mache ich falsch? Ich habe auch .append probiert oder System.out.println() aber er tut rein gar nichts. Später sollen dann über actionPerformed komplexe Methoden aufgerufen werden. Aber wenn nicht einmal eine Textausgabe klappt…
Wahrscheinlich irgendein dummer Anfängerfehler. Ich komme aber nicht dahinter.
Vielen Dank für Eure Tipps.
Hier ist mein bisheriger Code dazu:
[JAVA=42]
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class BeispielListener extends JFrame implements ActionListener {
JButton bestätigenBtn;
JButton verwerfenBtn;
JTextArea fehlerAusgabeArea;
JPanel bestätigenPanel;
public BeispielListener() {
this.setTitle("Verschnittbörse");
this.setSize(1350, 630);
setLayout(new GridLayout(2,1));
JPanel eingabePanel = new JPanel();
eingabePanel.setBackground(Color.BLUE);
JPanel bestätigenPanel = new JPanel();
bestätigenPanel.setBackground(Color.RED);
add(eingabePanel);
add(bestätigenPanel);
//Eingabe-Panel
JPanel p1 = new JPanel();
p1.setBackground(Color.GREEN);
p1.setBorder(BorderFactory.createTitledBorder("BASISDATEN"));
JPanel p2 = new JPanel();
p2.setBackground(Color.YELLOW);
JPanel p3 = new JPanel();
p3.setBackground(Color.ORANGE);
JPanel p4 = new JPanel();
p4.setBackground(Color.PINK);
eingabePanel.setLayout(new GridLayout(1,4));
eingabePanel.add(p1);
eingabePanel.add(p2);
eingabePanel.add(p3);
eingabePanel.add(p4);
//Panel p1
JLabel bezeichnungLabel = new JLabel("Bezeichung: ");
JLabel artLabel = new JLabel("Art: ");
JLabel artLabel2 = new JLabel("<html><body>(Geben Sie V für Verschnitt<br>oder P für Produkt ein.)</body></html>");
JLabel materialLabel = new JLabel("Material: ");
final JTextField bezeichnungField = new JTextField(8);
// Array für JComboBox
String comboBoxListe1[] = {"-","V","P",};
//JComboBox mit Material-Einträgen wird erstellt
final JComboBox artAuswahl = new JComboBox(comboBoxListe1);
// Array für JComboBox
String comboBoxListe2[] = {"-", "DC01", "DC03","DC04", "DC05", "DC06", "DC07", "DD11", "DD12", "DD13", "DD14", "DX51D", "DX52D", "DX53D", "DX54D", "DX55D", "DX56D", "DX57D", "DX58D",};
//JComboBox mit Material-Einträgen wird erstellt
final JComboBox materialAuswahl = new JComboBox(comboBoxListe2);
p1.setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
//// First column /////////////////////////
gc.anchor = GridBagConstraints.LINE_END;
gc.weightx = 0.5;
gc.weighty = 0.5;
gc.gridx = 0;
gc.gridy = 0;
p1.add(bezeichnungLabel, gc);
gc.gridx = 0;
gc.gridy = 1;
p1.add(artLabel, gc);
gc.gridx = 0;
gc.gridy = 3;
p1.add(materialLabel, gc);
//// Second column
gc.anchor = GridBagConstraints.LINE_START;
gc.gridx = 1;
gc.gridy = 0;
p1.add(bezeichnungField, gc);
gc.gridx = 1;
gc.gridy = 1;
p1.add(artAuswahl, gc);
gc.gridx = 1;
gc.gridy = 2;
p1.add(artLabel2, gc);
gc.gridx = 1;
gc.gridy = 3;
p1.add(materialAuswahl, gc);
//Bestätigen-Panel
final JTextArea fehlerAusgabeArea = new JTextArea(18, 85);
final JButton bestätigenBtn = new JButton("Eingaben bestätigen");
final JButton verwerfenBtn = new JButton("Eingaben verwerfen");
bestätigenBtn.addActionListener(this);
verwerfenBtn.addActionListener(this);
bestätigenPanel.add(fehlerAusgabeArea);
bestätigenPanel.add(bestätigenBtn);
bestätigenPanel.add(verwerfenBtn);
this.add(bestätigenPanel);
}
public static void main (String[] args) {
BeispielListener bl = new BeispielListener();
bl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bl.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == this.bestätigenBtn) {
fehlerAusgabeArea.setText(("Bestätigen-Button wurde betätigt"));
}
}
}
[/code]