Checkboxen eines anderen Panels ansprechen

Status
Nicht offen für weitere Antworten.

Fry

Aktives Mitglied
Hallo Forum 😀

Ich habe eine Frage bezüglich Panels. Angenommen ich habe eine Klasse
Code:
public class StartKlasse
{
	public static void main(String[] args) 
	{
		FrameKlasse frame = new FrameKlasee();
		frame.setSize(WIDTH, HEIGHT);
		frame.setVisible(true);
		
	}
	
	private static int WIDTH = 400;
	private static int HEIGHT = 300;
}
dieses ist meine Startklasse, in der ich dann ein Objekt "frame" erstelle (von JFrame abgeleiteten Klasse). In diesem erstellten Objekt möchte ich zwei Panels plazieren, die ich wiederum in zwei dafür eigens erstellten und von JPanel abgeleiteten Klasse hinterlegt habe...

Klasse mit JFrame:

Code:
class StartKlasse extends JFrame
{
	public StartKlasse()
	{
		super("Titel der Appliaktion");
		StartPanel panel = new StartPanel();
		StartPanel2 panel2 = new StartPanel2();
		BorderLayout layout = new BorderLayout();
		add(panel, layout.CENTER);
		add(panel2, layout.SOUTH);
		
	}
}

DIe Panelklasse (ich schreib mal exemplarisch eine hin) sehe so aus:

Code:
class StartPanel extends JPanel
{
	public PanelButton()
	{
		JCheckBox box = new JCheckBox("Checkbox auf die ich aus anderem Panel zugreifen möchte");
	}
}

So, wenn ich jetzt noch eine weiteres Panel habe ( zum Beispiel mit zwei Buttons) und ich möchte eine Prüfung machen, ob beispielsweise die CheckBox in panel (StartPanel) gesetzt ist, wie mache ich das? Wenn ich an dem Button einen ActionListener plazieren, wo dann geprüft wird, ob in dem anderen Panel eine JCheckBox gesetzt ist, wie geht das genau?

Wenn ich alles in einem Panel habe bekomme ich die Abfrage auch hin, aber so ist mir das unklar.

Kann mir da mal wer erleuchten? 😀

Thx
Fry
 
du musst die checkbox auf dem StartPanel nach aussen verfügbar machen... (resp. der wert der checkbox) :arrow: stichwort referenzen

Code:
class StartPanel extends JPanel {
  private JCheckBox box;

  public StartPanel() {
    box = new JCheckBox("Checkbox auf die ich aus anderem Panel zugreifen möchte");
  }

  public boolean getBoxValue() {
    return box.isSelected();
  }
}

jetzt kannst du per getBoxValue() auf den wert der checkbox zugreifen.
 
Hi,

ja soweit war ich auch schonmal, nur wenn ich innerhalb des einen Panels einen Button machen, mit einem ActionListener belege und dann prüfen will, dann würde ich auf das andere Panel zugreifen wollen:

Code:
if(panel.getBoxValue == true)
{
		//Code hier					
}

aber dann findet er immer nicht mein erstes Panel. Wie mache ich das sichtbar?
 
Ähem... *räusper*

du könntest entweder deine Panels statisch machen und die Methoden die du dann nutzen willst auch. Is ja eh ne GUI und die Panels verschwinden ja nich einfach so ODER...was denke ich garkeine soooo gute idee is. Oder jedem deiner Panels mittels "setter" das andere Panel bekannt machen.

Quasi:

eine Methode fürs erste Panel...
Code:
deinPanelDingen panelTeil;
setPanel2(deinPanelDingen panel)
{
  this.panelTeil = panel;
}

und in deinem 2ten Panel im Prinzip genauso, halt nur fürs erste.
Müsste eigentlich klappen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben