Ich habe ein Fenster mit Textfeldern, Labeln und einem Knopf. Sobald der Knopf gedrückt wird sollen die eingegebenen Werte übernommen und verrechnet werden. Dabei soll außerdem das Ergebnis (JLabel) erscheinen. Um das JLabel erscheinen zu lassen habe ich versucht in der actionPerformed Klasse das Label mit “add” hinzuzufügen. An der Stelle hat mir Eclipse einen Fehler ausgespuckt. Ich weiß nicht wie ich das Problem lösen kann.
Das kleine Programm soll bei kubischen Gleichungen die Nullstellen ausrechnen. Den Code fürs Berechnen habe ich schon für die Console programmiert, kann ich auch gerne auf Anfrage posten.
In dem Code geht es erstmal speziell um das JLabel x1, dass bei Betätigung des Buttons erscheinen soll.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
public class UnserFenster extends JFrame {
float a,b,c,d,ee,f,l;
double x10,x20;
JLabel text;
JLabel text2;
JLabel text3;
JLabel zergebnis;
JLabel zwischenergebnis;
JLabel x1;
JLabel x2;
JLabel x3;
JButton button;
JTextField eingabe;
JTextField eingabe2;
JTextField eingabe3;
JTextField eingabe4;
public UnserFenster() {
setVisible(true);
setSize(500, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Rechner");
setResizable(false);
setLayout(null);
text = new JLabel("x^3 +");
text.setBounds(65, 30, 500, 60);
Font schrift = text.getFont().deriveFont(Font.BOLD, 17);
text.setFont(schrift);
add(text);
text2 = new JLabel("x^2 +");
text2.setBounds(165, 30, 500, 60);
text2.setFont(schrift);
add(text2);
text3 = new JLabel("x +");
text3.setBounds(265, 30, 500, 60);
text3.setFont(schrift);
add(text3);
zergebnis = new JLabel("Zwischenergebnis:");
zergebnis.setBounds(40, 100, 200, 50);
Font schriftz = text.getFont().deriveFont(Font.ITALIC, 20);
zergebnis.setFont(schriftz);
add(zergebnis);
zwischenergebnis = new JLabel("xyz");
zwischenergebnis.setBounds(220, 100, 200, 50);
zwischenergebnis.setFont(schriftz);
add(zwischenergebnis);
x1 = new JLabel("X1 =");
x1.setBounds(40, 170, 300, 70);
Font schriftx = text.getFont().deriveFont(Font.BOLD + Font.ITALIC, 25);
x1.setFont(schriftx);
//add(x1);
x2 = new JLabel("X2 =");
x2.setBounds(40, 220, 300, 70);
x2.setFont(schriftx);
add(x2);
x3 = new JLabel("X3 =");
x3.setBounds(40, 270, 300, 70);
x3.setFont(schriftx);
add(x3);
button = new JButton("berechnen");
button.setBounds(377, 52, 105, 20);
button.addActionListener(new UnserListener());
button.setEnabled(false);
add(button);
eingabe = new JTextField();
eingabe.setBounds(10, 50, 50, 25);
eingabe.addCaretListener(new SchreibkopfListener());
//eingabe.setText(String.valueOf(a));
add(eingabe);
eingabe2 = new JTextField();
eingabe2.setBounds(110, 50, 50, 25);
eingabe2.addCaretListener(new SchreibkopfListener());
add(eingabe2);
eingabe3 = new JTextField();
eingabe3.setBounds(210, 50, 50, 25);
eingabe3.addCaretListener(new SchreibkopfListener());
add(eingabe3);
eingabe4 = new JTextField();
eingabe4.setBounds(310, 50, 50, 25);
eingabe4.addCaretListener(new SchreibkopfListener());
add(eingabe4);
repaint();
}
private class UnserListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
/* Hier ist der Fehler! UnserFenster.add(x1); */
String h,i,j,k;
h = eingabe.getText();
i = eingabe2.getText();
j = eingabe3.getText();
k = eingabe4.getText();
try{
a = Float.parseFloat(h);
b = Float.parseFloat(i);
c = Float.parseFloat(j);
d = Float.parseFloat(k);
}
catch(NumberFormatException y)
{
return;
}
}
}
private class SchreibkopfListener implements CaretListener{
@Override
public void caretUpdate(CaretEvent arg0) {
String h = eingabe.getText();
String i = eingabe2.getText();
String j = eingabe3.getText();
String k = eingabe4.getText();
h = h.trim();
i = i.trim();
j = j.trim();
k = k.trim();
if(h.isEmpty() || i.isEmpty() || j.isEmpty() || k.isEmpty()){
button.setEnabled(false);
}else{
button.setEnabled(true);
}
}
}
}