Wie kann ich mehrere Buttons nacheinander ausgeben lassen?
Mein Programm soll mehrere Buttons nacheinander ausgeben können, ohne dass das vorherige Ergebnis überschrieben wird. Bisher wird aber immer die letzte Ausgabe überschrieben, wenn ich einen anderen Button drücke.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class IchBinFrame extends JFrame implements ActionListener {
private JButton button1 = new JButton("Ich");
private JButton button2 = new JButton("Bin");
private JButton button3 = new JButton("Wie");
TextArea text = new TextArea(10, 10);
public IchBinFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
init();
}
private void init() {
JPanel panel1 =new JPanel();
panel1.setLayout(new FlowLayout());
// Verknüpfe alle Buttons mit dem Panel
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
this.setLayout(new BorderLayout());
this.add(panel1, BorderLayout.NORTH);
this.add(text, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent evt) {
Object src = evt.getSource();
if (src == button1) {
text.setText("Ich ");
}
else if (src == button2) {
text.setText("Bin ");
}
else if (src == button3) {
text.setText("Wie ");
}
}
}
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Java, Eclipse, Programmieren & Softwareentwicklung
Deine Fragestellung ist irreführend. So wie es aussieht, möchtest du eigentlich durch Klicks auf verschiedene Buttons einen Text aus mehreren Worten / Textteilen zusammenfügen.
Du musst dafür den alten Text mit dem neuen Textteil konkatenieren. Danach kannst du den Text der Komponente aktualisieren.
String oldText = text.getText();
text.setText(oldText + "new text ...");
Es wäre übrigens besser, wenn du die AWT TextArea gegen das Swing-Pendant JTextArea austauschst. Die AWT-Komponenten sind größtenteils veraltet.