Wie kann ich bei Druck auf Button 3 eine Zahl ins Textfeld eintragen?
Hallo,
ich würde es gerne schaffen, dass, wenn ich Button3 drücke, dieser die 0 einträgt.
Hat jemand von euch eine Idee? Das war bisher mein Ansatz:
inputField.setText(Integer.toString(a));
a ist natürlich definiert in diesem Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CopyOfCopyOftextapp2 extends JFrame implements ActionListener {
private JTextField inputField;
private JTextArea outputArea;
private JButton submitButton;
private JButton submitButton2;
private JButton submitButton3;
public CopyOfCopyOftextapp2() {
JLabel inputLabel = new JLabel("Bitte geben Sie eine Zahl ein:");
inputField = new JTextField(10);
submitButton = new JButton("Eingabe");
submitButton.addActionListener(this);
submitButton2= new JButton("Beenden");
submitButton2.addActionListener(this);
submitButton3= new JButton("0");
submitButton3.addActionListener(this);
outputArea = new JTextArea(100, 160);
JScrollPane outputPane = new JScrollPane(outputArea);
Container container = getContentPane();
container.setLayout(new FlowLayout());
container.add(inputLabel);
container.add(inputField);
container.add(submitButton);
container.add(submitButton2);
container.add(submitButton3);
container.add(outputPane);
setSize(Toolkit.getDefaultToolkit().getScreenSize());
var subBox = new JPanel(new GridLayout(1, 2));
subBox.add(new JLabel("2"));
subBox.add(new JLabel("3"));
var box = new JPanel(new GridLayout(2, 1));
box.add(new JLabel("1"));
box.add(subBox);
GraphicsDevice device;
device = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0];
setUndecorated(true);
device.setFullScreenWindow(this);
setTitle("Text App");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
CopyOfCopyOftextapp2 app = new CopyOfCopyOftextapp2();
}
public void actionPerformed(ActionEvent e) {
// Neue Parameter hinzugefügt
if (e.getSource() == this.submitButton) {
int inputNumber = Integer.parseInt(inputField.getText());
switch (inputNumber) {
case 1:
String text = "Sie haben die Zahl 1 eingegeben.";
outputArea.setText(text);
break;
case 2:
String text2 = "Sie haben die Zahl 2 eingegeben.";
outputArea.setText(text2);
break;
default:
String text3 = "Sie haben die falsche Zahl eingegeben.";
outputArea.setText(text3);
}
}
else if (e.getSource() == this.submitButton2) {
int result = JOptionPane.showConfirmDialog(null, "Wollen sie das Programm wirklich beenden", "Programm beenden", JOptionPane.YES_NO_OPTION);
switch (result) {
case JOptionPane.YES_OPTION:
System.exit(0);
case JOptionPane.NO_OPTION:
}
if (e.getSource() == this.submitButton3) {}
}
}
}
1 Antwort
Wenn du die Variablendefinition von a mitsamt deiner Zeile in deine actionPerformed-Methode einbindest, solltest du zu deinem Ergebnis kommen. Die Abfrage, ob die Ereignisquelle dein dritter Button war, ist ja auch schon vorhanden.
ich bekomme diesen Fehlercode : Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
Habe den Fehler, hatte ne klammer in der if schleife falsch gesetzt und das else vergessen, trotzdem danke dir
(...) in der if schleife (...)
Bitte beachte, dass das if-Konstrukt keine Schleife darstellt, sondern eine Verzweigung. Bei der Auswertung einer Schleife kann der Schleifenkörper n-Mal wiederholt werden. Bei der Auswertung einr Verzweigung wird der Körper maximal einmal ausgeführt.
Nein das geht nicht, da ist eben mein Problem