Zum Inhalt springen

JFrame aus ActionListener herraus ansprechen


getCppKenntnisse()

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von getCppKenntnisse()
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...