JPanel

Hallo Community, ich habe eine Frage, bei der ich leider nicht weiterkomme.

Ich habe ein JFrame, das mit einem Panel und GridLayout(1,2) in 2 Spalten unterteilt wurde. In dem jeweiligen Panel liegt ein Button. Wenn ich diesen drücke, wird der Button visible(false) gesetzt. dann möchte ich ein weiteres Panel in dieses legen, leider wird dort irgendwie wieder ein 2 spaltiges panel eingefügt, obwohl ich das nicht so festgelegt habe. Ich bin verwirrt, vllt sehe ich den Wald vor lauter Bäumen nicht mehr^^

Oder liegt es einfach daran, dass der Button ja immernoch da ist und er mein neues panel einfach nur neben den Button setzt?

Also ich will dass der Platz wo der Button liegt wieder frei ist für ein Panel :slight_smile:
Wäre schön wenn mir jemand helfen könnte :slight_smile:

Schau dir mal das CardLayout - Oracle an. Auf eine Karte kommt dann der Button und auf eine andere der Inhalt der Angezeigt werden soll. Beim klicken auf den Button wechselst du dann einfach die Karte entsprechend aus.
Im Byte-Welt-Wiki gibts auch ein Tutorial zu CardLayout.

Ein KSKB würde wohl helfen…

Wahrscheinlich… Aber ohne deinen Quellcode schwer genau zu sagen.

die Methode die du suchst heißtremove()

Danke für die vielen Antworten und sry dass ich jetzt erst schreibe. Hab es jetzt gelöst. Ich weiß nur grad net mehr wie (ist schon so lange her^^) Ich hab nochmal ne Frage.

Ich habe jetzt Buttons über ne For-Schleife erstellt und jedem auch gleich einen Actionlistener verpasst

for (int iIndex = 0; iIndex < btn.length; iIndex++) {
			btn[iIndex] = new JButton(""); 
			btn[iIndex].setName(""+iIndex);
			btn[iIndex].addActionListener(new StartProgrammPRIM(btn[iIndex], iIndex, start));

Die Parameter die ich mitgebe ist einmal btn[iIndex also der Button der gedrückt wurde, dann den index nochmal und start ist ein Button der dann eingeblendet werden soll.

Ob das jetzt so sinnvoll ist, ist jetzt nicht entscheidend. Was ich jetzt noch gemacht habe ist, dass ich beim Klick den Button Background grün mache.

Woran ich aber jetzt scheiter ist, dass ich mir merken will welcher Button vorher gedrückt wurde. Heißt wenn ich das erste Mal klicke färbt er mit den gedrückten Button grün. Drücke ich erneut ein Button, dann möchte ich diesen grün einfärben und den davor wieder grau machen. Ich weiß aber absolut nicht wie das geht, weil meine variable_alt bei jedem listerneraufruf ja wieder den initialwert bekommt oder nicht?

Hoffe es ist verständlich was ich erreichen will und mir kann jemand beiu meinem Problem helfen :slight_smile:

DAnke schonmal

Ich würde dass über eine staticVariable in StartProgrammPRIMlösen.class StartProgrammPRIM implements ActionListener{ private static JComponent last = new JButton(); //dummy zur Vermeidung von if(last!=null)... @Override public void actionPerformed(ActionEvent e) { last.setBackground(Color.GRAY); ((JComponent) e.getSource()).setBackground(Color.GREEN); last=(JButton) e.getSource(); //... } }
bye
TT

Perfekt genau das wollte ich :slight_smile:
Hm auf dies Idee mit dem Dummy Button bin ich absolut nicht gekommen. Macht aber auf jeden Fall Sinn :slight_smile:

Em ums gleich schön zu machen:
Ich möchte jetzt den Button nicht Grau haben sondern in der Farbe wie er beim initialisieren ist. Welche ist dass bzw kann ich mir die Farbe irgendwie auslesen und ich einer eigenen Color speichern und dann aufrufen?

Danke

Evtll. mit den [JAPI]UIDefaults[/JAPI]
http://wiki.byte-welt.net/wiki/UIDefaults#JButton

[QUOTE=Medicap_mw;29623]Die Parameter die ich mitgebe ist einmal btn[iIndex also der Button der gedrückt wurde, dann den index nochmal und start ist ein Button der dann eingeblendet werden soll.

Ob das jetzt so sinnvoll ist, ist jetzt nicht entscheidend.[/QUOTE]
Zumindest kommen Dir das scheinbar ja selbst Zweifel.

Die Darstellung einen JButtons ist stark vom verwendeten LaF abhängig, da ist es dann nicht unbedingt so einfach die ursprüngliche Darstellung wieder zu setzen - außer die entspricht ohnehin nicht dem LaF Standard

Kann es sein, dass Du so eine Art ButtonGroup mit ToggleButtons nachbauen willst?
Da wäre folgendes evtl. eine Alternative:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 200, 60);
frame.setLocationRelativeTo(null);

UIManager.put("ToggleButton.select", Color.GREEN);

JPanel panel = new JPanel(new GridLayout(1, 0));
ButtonGroup group = new ButtonGroup();
for (int i=0; i<10; i++) {
	JToggleButton button = new JToggleButton();
	group.add(button);
	panel.add(button);
}

frame.add(panel);
frame.setVisible(true);```

[QUOTE=Medicap_mw;29632]Ich möchte jetzt den Button nicht Grau haben sondern in der Farbe wie er beim initialisieren ist. Welche ist dass bzw kann ich mir die Farbe irgendwie auslesen und ich einer eigenen Color speichern und dann aufrufen?[/QUOTE]Die Lösung von _Michael ist natürlich die Beste, aber mit meiner könnte man das auch nachbilden:class StartProgrammPRIM implements ActionListener{ private static final Color DEFAULT_BACKGROUND = new JButton().getBackground(); private static JComponent last = new JButton(); //dummy zur Vermeidung von if(last!=null)... @Override public void actionPerformed(ActionEvent e) { last.setBackground(DEFAULT_BACKGROUND); //oder alternativ ohne Konstante last.setBackground(((JComponent) e.getSource()).getBackground()); ((JComponent) e.getSource()).setBackground(Color.GREEN); last=(JButton) e.getSource(); //... } }
bye
TT