Das ist die Methode in der Klasse KontoPanel. Ich hab schon etliches versucht aber jedesmal wenn ich das Programm starte und das Frame sich öffnet, wird der neue Kontostand nach dem Klicken auf den Button nicht ausgerechnet. Dann dachte ich mir ok ich versuch einfach das Fenster vom Frame zu schließen wenn auf den Button geklickt, dies hat auch nicht funktioniert.
(Dazu sei noch gesagt das die Methode sich mal in der Frame-Klasse war).
Ich hoffe es gibt eine Methode für Swing-Komponenten die das sofort aktualisieren. Ich hab das mal mit Observer probiert jedoch versteh ich das Konzept nicht und als ich fragte war jetzt nicht soviel feedback, Naja.
Ich bedanke mich im Voraus und hoffe ihr könnt mir weiterhelfen.
Mit freundlich Grüßen
Euer Green
(Dazu sei noch gesagt das die Methode sich mal in der Frame-Klasse war).
Java:
public class KontoPanelComponent implements Observer {
private Bank bank;
//private JButton btn1, btn2, btn3, btn4;
private JTextField auszahlung, einzahlung, kontostand;
public KontoPanelComponent(Bank bank) {
super();
this.bank = bank;
}
public JComponent erzeugeKontoListenPanel() {
JPanel panel = new JPanel(new GridLayout(4, 10));
for (Kunde kunde : bank.getKundeList()) {
for (Konto konto : kunde.getKonto()) {
if(kunde.getKonto()!=null && kunde.getKundenNummer().equals(konto.getKundennr())){
einzahlung = new JTextField();
auszahlung = new JTextField();
DecimalFormat df = new DecimalFormat("#.00");
String s = df.format(konto.getKontoStand());
kontostand = new JTextField(s);
kontostand.setEditable(false);
JPanel innerPanel = new JPanel();
innerPanel.setLayout(new GridLayout(10, 0));
innerPanel.add(new JLabel("IBAN: " + konto.getiBAN() +"\n"));
innerPanel.add(new JLabel("\nKontostand"));
innerPanel.add(kontostand);
innerPanel.add(new JLabel("\nEinzahlung"));
innerPanel.add(einzahlung);
innerPanel.add(new JLabel("\nAuszahlung"));
innerPanel.add(auszahlung);
JButton btn1 = new JButton("Ausf\u00fchren");
btn1.setPreferredSize(new Dimension(5,5));
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(btn1)) {
if (!einzahlung.getText().isEmpty()) {
double summe = Double.parseDouble(s) + Double.parseDouble(einzahlung.getText());
String summeConverter = df.format(summe);
kontostand.setText(summeConverter);
}else if (!auszahlung.getText().isEmpty()) {
double summe = Double.parseDouble(s) - Double.parseDouble(auszahlung.getText());
String summerConverter = df.format(summe);
kontostand.setText(summerConverter);
}
}
}
});
innerPanel.add(btn1);
JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
innerPanel.add(jsp);
panel.add(innerPanel);
}
}
}
Ich bedanke mich im Voraus und hoffe ihr könnt mir weiterhelfen.
Mit freundlich Grüßen
Euer Green