L
lucas8995
Gast
Hallo liebes Forum
Bin gerade dabei mit BlueJ ein GUI zu programmieren, allerdings führt der ActionListener seine Aufgaben nur teilweise aus. JTextFields werden nicht angezeigt, oder wenn sie removed werden sollen, bleiben sie trotzdem da. Weiterhin werden die eingegebenen Werte nicht übertragen. Ich finde meinen Fehler nicht, werd schon ganz bekloppt. Das Programm soll ganz einfach nur Umfang und Flächeninhalt vom Quadrat, Rechteck, Dreieck und Kreis ausrechnen. Für Jede Figur habe ich eine eigene Klasse erstellt.
Hier der Quellcode der Klasse, in der das GUI programmiert ist:
Kurze Erklärung (bin übrigens totaler Anfänger): Wenn das Programm gestartet wird, soll gefragt werden welche Figur man berechnen möchte. Wird der entsprechende Button angeklickt soll ein JTextField für, beispielsweise beim Kreis, den Radius erscheinen. Hat man den Wert eingegeben und klickt auf den JButton "Berechnen" soll rechts neben dem JTextField ein JLabel mit dem Flächeninhalt und Umfang erscheinen.
Hänge jetzt schon einige Tage daran. Es wäre super, wenn mir jemand erklären könnte was ich falsch mache.
Liebe Grüße
// Für Kritik und generell für Verbesserungen am Quellcode bin ich natürlich immer offen!
Bin gerade dabei mit BlueJ ein GUI zu programmieren, allerdings führt der ActionListener seine Aufgaben nur teilweise aus. JTextFields werden nicht angezeigt, oder wenn sie removed werden sollen, bleiben sie trotzdem da. Weiterhin werden die eingegebenen Werte nicht übertragen. Ich finde meinen Fehler nicht, werd schon ganz bekloppt. Das Programm soll ganz einfach nur Umfang und Flächeninhalt vom Quadrat, Rechteck, Dreieck und Kreis ausrechnen. Für Jede Figur habe ich eine eigene Klasse erstellt.
Hier der Quellcode der Klasse, in der das GUI programmiert ist:
Java:
import java.awt.Font;
import javax.swing.*;
import java.awt.event.*;
public class StartGUI extends JFrame{
JLabel text;
JLabel text_fD;
JLabel text_fQ;
JLabel text_fR;
JLabel text_fK;
JLabel text_uK;
JLabel text_uR;
JLabel text_uQ;
JLabel text_uD;
JLabel text_kD;
JButton buttonQ;
JButton buttonR;
JButton buttonD;
JButton buttonK;
JButton buttonBD;
JButton buttonBQ;
JButton buttonBR;
JButton buttonBK;
JTextField eingabe_d1;
JTextField eingabe_d2;
JTextField eingabe_d3;
JTextField eingabe_q;
JTextField eingabe_r1;
JTextField eingabe_r2;
JTextField eingabe_k;
Dreieck d;
Quadrat q;
Rechteck r;
Kreis k;
public StartGUI()
{
super("Elementarisch Geometrische Groessen");
setSize(500,300);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLayout(null);
setAlwaysOnTop(true);
oberflaeche();
}
public void oberflaeche()
{
text = new JLabel("Bitte waehlen Sie eine Figur und geben die erforderlichen Werte in cm ein.");
text.setBounds(10, 0,500, 50);
Font schriftart = (text.getFont().deriveFont(Font.BOLD + Font.ITALIC, 12));
text.setFont(schriftart);
text.setVisible(true);
add(text);
startGUIButton();
}
public void startGUIButton()
{
buttonQ = new JButton("Quadrat");
buttonQ.setBounds(25, 175, 200, 25);
add(buttonQ);
buttonQ.addActionListener(new AListener());
buttonR = new JButton("Rechteck");
buttonR.setBounds(275, 175, 200, 25);
add(buttonR);
buttonD = new JButton("Dreieck");
buttonD.setBounds(25, 225, 200, 25);
add(buttonD);
buttonD.addActionListener(new AListener());
buttonK = new JButton("Kreis");
buttonK.setBounds(275, 225, 200, 25);
add(buttonK);
buttonBD = new JButton("Berechne");
buttonBD.setBounds(25, 275, 450, 25);
buttonBD.setVisible(false);
buttonBD.addActionListener(new AListener());
buttonBQ = new JButton ("Berechne");
buttonBQ.setBounds(25, 275, 450, 25);
buttonBQ.setVisible(false);
buttonBQ.addActionListener(new AListener());
buttonBK = new JButton ("Berechne");
buttonBK.setBounds(25, 275, 450, 25);
buttonBK.setVisible(false);
buttonBK.addActionListener(new AListener());
buttonBR = new JButton ("Berechne");
buttonBR.setBounds(25, 275, 450, 25);
buttonBR.setVisible(false);
buttonBR.addActionListener(new AListener());
}
public void leeren()
{
remove(eingabe_q);
remove(eingabe_d1);
remove(eingabe_d2);
remove(eingabe_d3);
remove(eingabe_r1);
remove(eingabe_r2);
remove(eingabe_k);
}
public class AListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == buttonD)
{
leeren();
setSize(500, 350);
buttonBD.setVisible(true);
add(buttonBD);
text.setLocation(100,0);
text.setText("Bitte die Laengen der Seiten a,b und c in cm eingeben.");
eingabe_d1 = new JTextField();
eingabe_d1.setBounds(200,50,100,25);
eingabe_d1.setVisible(true);
add(eingabe_d1);
eingabe_d2 = new JTextField();
eingabe_d2.setBounds(200,85,100,25);
eingabe_d2.setVisible(true);
add(eingabe_d2);
eingabe_d3 = new JTextField();
eingabe_d3.setBounds(200,120,100,25);
eingabe_d3.setVisible(true);
add(eingabe_d3);
}
else if (e.getSource() == buttonBD)
{
d = new Dreieck();
d.set_seitenlaenge_a(Double.parseDouble(eingabe_d1.getText()));
d.set_seitenlaenge_b(Double.parseDouble(eingabe_d2.getText()));
d.set_seitenlaenge_c(Double.parseDouble(eingabe_d3.getText()));
text_fD = new JLabel("Flaecheninhalt: "+d.get_flaecheninhalt()+"cm²");
text_uD = new JLabel("Umfang: "+d.get_umfang()+"cm");
text_kD = new JLabel("Konstruirbar? "+d.get_konstruirbarkeit());
text_fD.setBounds(350,50,30,25);
add(text_fD);
}
else if (e.getSource() == buttonQ)
{
leeren();
setSize(500, 350);
buttonBK.setVisible(true);
add(buttonBK);
text.setLocation(100,0);
text.setText("Bitte die Laenge der Seiten in cm eingeben.");
eingabe_q = new JTextField();
eingabe_q.setBounds(200,50,100,25);
eingabe_q.setVisible(true);
add(eingabe_q);
}
else if (e.getSource() == buttonBQ)
{
q = new Quadrat ();
q.set_seitenlaenge(Double.parseDouble(eingabe_q.getText()));
remove(eingabe_q);
text_fQ = new JLabel("Flaecheninhalt: "+q.get_flaecheninhalt()+"cm²");
text_uQ = new JLabel("Umfang: "+q.get_umfang()+"cm");
}
else if (e.getSource() == buttonR)
{
leeren();
setSize(500, 350);
buttonBR.setVisible(true);
add(buttonBR);
eingabe_r1 = new JTextField();
eingabe_r1.setBounds(200,50,100,25);
eingabe_r1.setVisible(true);
add(eingabe_r1);
eingabe_r2 = new JTextField();
eingabe_r2.setBounds(200,50,100,25);
eingabe_r2.setVisible(true);
add(eingabe_r2);
}
else if (e.getSource() == buttonBR)
{
r = new Rechteck();
r.set_seitenlaenge_a(Double.parseDouble(eingabe_r1.getText()));
r.set_seitenlaenge_b(Double.parseDouble(eingabe_r2.getText()));
text_fR = new JLabel("Flaecheninhalt: "+r.get_flaecheninhalt()+"cm²");
text_uR = new JLabel("Umfang: "+r.get_umfang()+"cm");
}
else if (e.getSource() == buttonK)
{
leeren();
setSize(500, 350);
buttonBK.setVisible(true);
add(buttonBK);
eingabe_k = new JTextField();
eingabe_k.setBounds(200,50,100,25);
eingabe_k.setVisible(true);
add(eingabe_k);
}
else if (e.getSource() == buttonBK)
{
k = new Kreis();
k.set_radius(Double.parseDouble(eingabe_k.getText()));
text_fK = new JLabel("Flaecheninhalt: "+k.get_flaecheninhalt()+"cm²");
text_uK = new JLabel("Umfang: "+k.get_umfang()+"cm");
}
}
}
}
Kurze Erklärung (bin übrigens totaler Anfänger): Wenn das Programm gestartet wird, soll gefragt werden welche Figur man berechnen möchte. Wird der entsprechende Button angeklickt soll ein JTextField für, beispielsweise beim Kreis, den Radius erscheinen. Hat man den Wert eingegeben und klickt auf den JButton "Berechnen" soll rechts neben dem JTextField ein JLabel mit dem Flächeninhalt und Umfang erscheinen.
Hänge jetzt schon einige Tage daran. Es wäre super, wenn mir jemand erklären könnte was ich falsch mache.
Liebe Grüße
// Für Kritik und generell für Verbesserungen am Quellcode bin ich natürlich immer offen!