getCppKenntnisse() Geschrieben 28. Juli 2009 Geschrieben 28. Juli 2009 Hallo Comm., ich habe einen JFrame(=BorderLayout), in dessem NORTH ist ein JPanel mit zwei JRadioButtons, ich möchte nun, dass wenn einer dieser JRadioButtons betätigt wird das CENTER(oder auch das komplette JFrame) neu gezeichnet wird. Aber leider kann ich in dem ActionListener nicht einfach das Fenster mit this ansprechen, könnt ihr mir sagen wie ich in den ActionListener das Fenster ansprechen kann, hab auch schon probiert nur das JPanel im CENTER mit Jpanel.validate(); Jpanel.repaint(); neuzuzeichnen, aber auch das mag er nicht wirklich gern. wäre glücklich über jede Hilfe mfg Zitieren
flashpixx Geschrieben 28. Juli 2009 Geschrieben 28. Juli 2009 "this" ist immer die Referenz des eigenen Objektes. D.h. bei Deinem ActionListener ist "this" das instanzierte Objekt (Grundlagen Java). Du musst das JFrame in den Actionlistener entsprechend als Property mit geben Phil Zitieren
JasonDelife Geschrieben 28. Juli 2009 Geschrieben 28. Juli 2009 Du kannst den ActionListener als anonyme Klasse implementieren. Dann kannst du nur die Frame-Elemente ansprechen. Ein Workaroung wäre, in dem Frame eine Variable "MyJFrame thisRef = this;" zu definieren. Über diese könntest du dann aus dem ActionListener den Frame ansprechen. Grüße, JasonDelife. Zitieren
speedi Geschrieben 28. Juli 2009 Geschrieben 28. Juli 2009 Wenn du den ActionListener als anonymous inner type implementiert hast (wovon ich anhand deiner Fragestellung ausgehe), kannst du es so ansprechen: NameDeinerVonJFrameAbgeleitetenKlasse.this.deinRadiobuttonAlsAttributDeinerVonJFrameAbgeleitetenKlasse Aber ohne Quellcode-Ausschnitt oder weitere Angaben kann ich nur raten, was dort der Fall ist. Zitieren
getCppKenntnisse() Geschrieben 29. Juli 2009 Autor Geschrieben 29. Juli 2009 Dankeschön mit Fenster.this.wasauchimmer sollte es gehen. Zitieren
getCppKenntnisse() Geschrieben 29. Juli 2009 Autor Geschrieben 29. Juli 2009 (bearbeitet) also mit dem ansprechen das ist schon so wie ich es mir dachte, aber es tut sich eine neue Frage auf also ich habe folgenden Code: package bank; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridBagLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.AbstractButton; import javax.swing.ButtonGroup; import javax.swing.ButtonModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; public class Fenster extends JFrame implements /*ActionListener,ItemListener*/ { private JPanel haupt = null, suche = null, delete = null, adde = null, buttons = null, privatK = null, firmenK = null, radio = null, defaultKunde = null, pufferPanel = null, maske = null; private JButton suchen = null, back = null, löschen = null, anlegen = null, beenden = null, mainButton_suche = null, mainButton_add = null, mainButton_delete = null; private JTextField vorname = null, nachname = null, adresse = null, gebdatum = null, beruf = null, firmenname = null, bonität = null, mitarbeiter = null; private JRadioButton privatKunde = null, firmenKunde = null; private JLabel Lbild = null, Lvorname = null, Lnachname = null, Ladresse = null, Lgebdatum = null, Lberuf = null, Lfirmenname = null, Lbonität = null, Lmitarbeiter = null; private ButtonGroup KAddPF = null; private ButtonModel selectedModel = null; private int flag; private JPanel getHaupt() { this.setTitle("xyz Bank"); this.setBounds(200,200,400,200); haupt = new JPanel(); haupt.setLayout(new BorderLayout()); haupt.setBackground(Color.white); buttons = new JPanel(); buttons.setLayout(new GridBagLayout()); buttons.setBackground(Color.white); mainButton_add = new JButton(); //mainButton_add.setBounds(new Rectangle(10,10,10,100)); mainButton_add.setText("Kunde anlegen"); mainButton_add.addActionListener(sliceActionListener); mainButton_delete = new JButton(); //mainButton_delete.setBounds(new Rectangle(10,10,100,100)); mainButton_delete.setText("Kunde löschen"); mainButton_delete.addActionListener(sliceActionListener); mainButton_suche = new JButton(); //mainButton_suche.setBounds(new Rectangle(10,10,10,10)); mainButton_suche.setText("Kunde suchen"); mainButton_suche.addActionListener(sliceActionListener); Lbild = new JLabel(new ImageIcon("Pfad/untitled.jpg")); Lbild.setBounds(new Rectangle(10,10,10,10)); buttons.add(mainButton_add); buttons.add(mainButton_suche); buttons.add(mainButton_delete); haupt.add(Lbild, BorderLayout.CENTER); haupt.add(buttons, BorderLayout.SOUTH); return haupt; } private JPanel getAdde() { this.setTitle("xyz Bank - Kunde anlegen"); this.setBounds(200,200,400,400); adde = new JPanel(); adde.setLayout(new BorderLayout()); adde.setBackground(Color.white); buttons = new JPanel(); buttons.setLayout(new BorderLayout()); buttons.setBackground(Color.white); radio = new JPanel(); radio.setLayout(new GridBagLayout()); radio.setBackground(Color.white); privatKunde = new JRadioButton(); privatKunde.setText("Privatkunde"); firmenKunde = new JRadioButton(); firmenKunde.setText("Firmenkunde"); firmenKunde.setBackground(Color.white); privatKunde.setBackground(Color.white); privatKunde.addActionListener(sliceActionListener); firmenKunde.addActionListener(sliceActionListener); //privatKunde.setSelected(true); KAddPF = new ButtonGroup(); KAddPF.add(privatKunde); KAddPF.add(firmenKunde); back = new JButton(); back.setText("Zurück"); back.addActionListener(sliceActionListener); anlegen = new JButton(); anlegen.setText("Anlegen"); anlegen.addActionListener(sliceActionListener); radio.add(privatKunde); radio.add(firmenKunde); buttons.add(back, BorderLayout.WEST); buttons.add(anlegen, BorderLayout.EAST); adde.add(buttons, BorderLayout.SOUTH); selectedModel = KAddPF.getSelection(); pufferPanel = null; if (flag == 1) { privatKunde.setSelected(true); } else if (flag == 2) { firmenKunde.setSelected(true); } if (firmenKunde.getModel() == selectedModel) { pufferPanel = getFirmenKunde(); } else if (privatKunde.getModel() == selectedModel) { pufferPanel = getPrivatKunde(); } else { pufferPanel = getDefaultKunde(); } adde.add(pufferPanel, BorderLayout.CENTER); adde.add(radio, BorderLayout.NORTH); return adde; } private JPanel getPrivatKunde() { this.setBounds(200,200,400,400); privatK = new JPanel(); privatK.setLayout(new FlowLayout(FlowLayout.CENTER, 300, 10)); privatK.setBackground(Color.white); Lvorname = new JLabel(); Lvorname.setText("Vorname:"); Lnachname = new JLabel(); Lnachname.setText("Nachname:"); Ladresse = new JLabel(); Ladresse.setText("Adresse:"); Lberuf = new JLabel(); Lberuf.setText("Beruf:"); Lgebdatum = new JLabel(); Lgebdatum.setText("Geburtsdatum:"); vorname = new JTextField(10); nachname = new JTextField(10); adresse = new JTextField(10); gebdatum = new JTextField(10); beruf = new JTextField(10); privatK.add(Lvorname); privatK.add(vorname); privatK.add(Lnachname); privatK.add(nachname); privatK.add(Ladresse); privatK.add(adresse); privatK.add(Lberuf); privatK.add(beruf); privatK.add(Lgebdatum); privatK.add(gebdatum); return privatK; } private JPanel getFirmenKunde() { this.setBounds(200,200,400,450); firmenK = new JPanel(); firmenK.setLayout(new FlowLayout(FlowLayout.CENTER, 300, 10)); firmenK.setBackground(Color.white); Lvorname = new JLabel(); Lvorname.setText("Vorname:"); Lnachname = new JLabel(); Lnachname.setText("Nachname:"); Ladresse = new JLabel(); Ladresse.setText("Adresse:"); Lfirmenname = new JLabel(); Lfirmenname.setText("Firmenname:"); Lbonität = new JLabel(); Lbonität.setText("Bonität:"); Lmitarbeiter = new JLabel(); Lmitarbeiter.setText("Mitarbeiter:"); vorname = new JTextField(10); nachname = new JTextField(10); adresse = new JTextField(10); firmenname = new JTextField(10); bonität = new JTextField(10); mitarbeiter = new JTextField(10); firmenK.add(Lvorname); firmenK.add(vorname); firmenK.add(Lnachname); firmenK.add(nachname); firmenK.add(Ladresse); firmenK.add(adresse); firmenK.add(Lfirmenname); firmenK.add(firmenname); firmenK.add(Lbonität); firmenK.add(bonität); firmenK.add(Lmitarbeiter); firmenK.add(mitarbeiter); return firmenK; } private JPanel getDefaultKunde() { this.setBounds(200,200,400,400); defaultKunde = new JPanel(); defaultKunde.setLayout(new FlowLayout(FlowLayout.CENTER, 300, 10)); defaultKunde.setBackground(Color.white); Lvorname = new JLabel(); Lvorname.setText("Vorname:"); Lnachname = new JLabel(); Lnachname.setText("Nachname:"); Ladresse = new JLabel(); Ladresse.setText("Adresse:"); vorname = new JTextField(10); nachname = new JTextField(10); adresse = new JTextField(10); defaultKunde.add(Lvorname); defaultKunde.add(vorname); defaultKunde.add(Lnachname); defaultKunde.add(nachname); defaultKunde.add(Ladresse); defaultKunde.add(adresse); return defaultKunde; } private JPanel getDeleteKunde() { this.setTitle("xyz Bank - Kunde löschen"); this.setBounds(200,200,400,400); delete = new JPanel(); delete.setLayout(new BorderLayout()); delete.setBackground(Color.white); buttons = new JPanel(); buttons.setLayout(new BorderLayout()); buttons.setBackground(Color.white); back = new JButton(); back.setText("Zurück"); back.addActionListener(sliceActionListener); löschen = new JButton(); löschen.setText("Löschen"); löschen.addActionListener(sliceActionListener); buttons.add(back, BorderLayout.WEST); buttons.add(löschen, BorderLayout.EAST); delete.add(buttons, BorderLayout.SOUTH); delete.add(getMaske(), BorderLayout.CENTER); return delete; } private JPanel getMaske() { maske = new JPanel(); maske.setBackground(Color.white); maske.setLayout(new FlowLayout(FlowLayout.CENTER, 150, 10)); vorname = new JTextField(20); nachname = new JTextField(20); Lvorname = new JLabel("Vorname:"); Lnachname = new JLabel("Nachname:"); maske.add(Lvorname); maske.add(vorname); maske.add(Lnachname); maske.add(nachname); return maske; } private JPanel getSearch() { this.setTitle("xyz Bank - Kunde suchen"); this.setBounds(200,200,400,400); suche = new JPanel(); suche.setLayout(new BorderLayout()); suche.setBackground(Color.white); buttons = new JPanel(); buttons.setLayout(new BorderLayout()); buttons.setBackground(Color.white); back = new JButton(); back.setText("Zurück"); back.addActionListener(sliceActionListener); suchen = new JButton(); suchen.setText("Suchen"); suchen.addActionListener(sliceActionListener); buttons.add(back, BorderLayout.WEST); buttons.add(suchen, BorderLayout.EAST); suche.add(buttons, BorderLayout.SOUTH); suche.add(getMaske(), BorderLayout.CENTER); return suche; } public Fenster() { setLayout(new FlowLayout(FlowLayout.CENTER, 150, 10)); this.setContentPane(getAdde()); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {e.getWindow().dispose();} }); setVisible(true); } ActionListener sliceActionListener = new ActionListener() { public void actionPerformed (ActionEvent ae) { AbstractButton aButton = (AbstractButton) ae.getSource(); System.out.println(aButton.getText()); if (aButton.getText().equals("Privatkunde")) { System.out.println("ich bin angekommen"); flag=1; Fenster.this.privatKunde.setSelected(true); Fenster.this.setContentPane(getAdde()); Fenster.this.validate(); Fenster.this.repaint(); //adde.validate(); //adde.repaint(); } else if (aButton.getText().equals("Firmenkunde")) { Fenster.this.setContentPane(getAdde()); Fenster.this.validate(); Fenster.this.repaint(); } else if (aButton.getText().equals("Zurück")) { Fenster.this.setContentPane(getAdde()); Fenster.this.validate(); Fenster.this.repaint(); } } }; } Wie man sieht arbeite ich ich mit JPanels Wenn ich nun in dem Fenster in dem Panel adde bin und ich oben die JradioButtons drücke soll es im BorderLayout.Center anstatt das getDefaultKunde(); das getPrivatKunde(); ausführen/zeichnen. Das mit dem flag ist ein bissl komisch ich weiss... das war quasi mein jüngster versuch... ich habe festgestellt dass es bei dem teil mit dem selectedModel Probleme gibt (=null) aber selbst wenn das eines meiner probleme ist ist es nicht DAS problem, da es au net klappt wenn ich auf den zurück button klicke, dass getHaupt(); gemacht wird Kann mir da jmd ein tip geben? mfg Bearbeitet 29. Juli 2009 von getCppKenntnisse() Zitieren
getCppKenntnisse() Geschrieben 29. Juli 2009 Autor Geschrieben 29. Juli 2009 okay danke problem ist gelöst... der zurückbutton hat nicht funktioniert weil unten im actionlistener stand getAdde(); anstatt getHauot(); und das selectedModel war natürlich leer(=null) weil es einfach ein paar zeilen weiter oben stand. dankeschön comm. habt mir echt geholfen... =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.