Moin Moin, ich habe einen Fehler in dem untenstehenden Interface.
Das Problem ist, an sich funktioniert das so, wie ich es mir vorstelle.
Es ist ein Programm um Zinsen eines Kredites zu berechnen.
Zuerst wird ausgewählt, was übergeben wird, z.B. Gesamtaufnahme, Zinssatz und die Laufzeit.
Danach kann werden die einzelnen Buttons zu eingabe Buttons und es öffnet sich ein InputDialog.
Danach wird mit ParseInt geprüft, ob nur Zahlen eingegeben wurden und zuletzt wird die zahl zurückgegeben um mit ihr zu arbeiten.
Problem ist, es wird jedes mal einmal mehr das Fenster zur Eingabe aufgerufen.
Ob ich abbrechen drücke oder eine Zahl eingebe ist dabei egal.
Ich habe auch schon mit verschiedenen ActionListenern gearbeitet, hab aber trotzdem nicht geholfen.
Kann mir jemand sagen, wo genau der Fehler liegt? Von dem mir gegebenen Verständnis her, müsste doch der ActionListener bzw das ActionEvent nur einmal aufgerufen werden.
Gibt es dazu eine passende methode um den irgendwie zu "resetten" oder das sonstwie zu verhindern?
Vielen Dank und das UI ist nicht immer so spärlich^^ habs nur reduzieren wollen zum fehlersuchen
lg, Jin
Das Problem ist, an sich funktioniert das so, wie ich es mir vorstelle.
Es ist ein Programm um Zinsen eines Kredites zu berechnen.
Zuerst wird ausgewählt, was übergeben wird, z.B. Gesamtaufnahme, Zinssatz und die Laufzeit.
Danach kann werden die einzelnen Buttons zu eingabe Buttons und es öffnet sich ein InputDialog.
Danach wird mit ParseInt geprüft, ob nur Zahlen eingegeben wurden und zuletzt wird die zahl zurückgegeben um mit ihr zu arbeiten.
Problem ist, es wird jedes mal einmal mehr das Fenster zur Eingabe aufgerufen.
Ob ich abbrechen drücke oder eine Zahl eingebe ist dabei egal.
Ich habe auch schon mit verschiedenen ActionListenern gearbeitet, hab aber trotzdem nicht geholfen.
Kann mir jemand sagen, wo genau der Fehler liegt? Von dem mir gegebenen Verständnis her, müsste doch der ActionListener bzw das ActionEvent nur einmal aufgerufen werden.
Gibt es dazu eine passende methode um den irgendwie zu "resetten" oder das sonstwie zu verhindern?
Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class UIKern {
private JFrame frame = new JFrame();
private JPanel panel = new JPanel();
private JButton button1 = new JButton();
private JButton button2 = new JButton();
private JButton button3 = new JButton();
private JButton referenz = new JButton();
private ActionListener action = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
((JButton) arg0.getSource()).setEnabled(false);
referenz = ((JButton) arg0.getSource());
eingabe();
}
};
void start() {
frame.setSize(600, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setSize(600, 400);
panel.setLayout(null);
panel.setBackground(Color.BLUE);
ersteAuswahl();
frame.add(panel);
frame.setVisible(true);
}
void buttonAnzeigen() {
button1.setBounds(50, 50, 100, 20);
button1.addActionListener(action);
button2.setBounds(50, 80, 100, 20);
button2.addActionListener(action);
button3.setBounds(50, 110, 100, 20);
button3.addActionListener(action);
panel.add(button1);
panel.add(button2);
panel.add(button3);
}
float eingabe() {
float floatTemp = 0;
String stringTemp;
while (true) {
stringTemp = JOptionPane.showInputDialog("Bitte nur Zahlen eingeben:");
if (stringTemp == null) {
referenz.setEnabled(true);
break;
} else {
try {
floatTemp = Float.parseFloat(stringTemp);
break;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Nur Zahlen eingeben", "Fehler!", JOptionPane.OK_CANCEL_OPTION);
}
}
}
return floatTemp;
}
void ersteAuswahl() {
button1.setBounds(200, 50, 200, 30);
button1.setText("Kapital, Zinsen, Laufzeit");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
panel.removeAll();
button1.setText("Kapital");
button2.setText("Zinsen");
button3.setText("Laufzeit");
buttonAnzeigen();
panel.repaint();
}
});
button2.setBounds(200, 90, 200, 30);
button2.setText("Kapital, Zinssatz, Dauer");
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
panel.removeAll();
button1.setText("Kapital");
button2.setText("Zinssatz");
button3.setText("Laufzeit");
buttonAnzeigen();
panel.repaint();
}
});
button3.setBounds(200, 130, 200, 30);
button3.setText("Zinsen, Zinssatz, Laufzeit");
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
panel.removeAll();
button1.setText("Zinsen");
button2.setText("Zinssatz");
button3.setText("Laufzeit");
buttonAnzeigen();
panel.repaint();
}
});
panel.add(button1);
panel.add(button2);
panel.add(button3);
}
}
Vielen Dank und das UI ist nicht immer so spärlich^^ habs nur reduzieren wollen zum fehlersuchen
lg, Jin