JPanel im JFrame öffnen

Hallo Leute,
ich habe ein JFrame mit mehreren Buttons. Wenn ich nun auf einen Button klicke öffnet sich ein JPanel aber wie bekomme ich es hin das sich das JPanel in dem JFrame öffnet ?

In etwa wie bei Firefox in den Einstellungen :slight_smile:

LG,
Movementroboter

[QUOTE=Movementroboter]Wenn ich nun auf einen Button klicke öffnet sich ein JPanel[/QUOTE]Kannst Du dass bitte etwas genauer beschreiben? Was meinst Du mit “öffnet sich”?

bye
TT

Wenn ich z.B. in Firefox auf den Punkt Sicherheit klicke öffnet sich ein JPanel (oder etwa nicht :confused:) mit den verschiedenen Einstellungs möglichkeiten.

LG,
Movementroboter

Das ist doch aber auch ein eigenständiges Fenster. Was meinst du genau mit: Der JPanel soll sich in dem JFrame öffnen?
Meinst du vielleicht, es soll sich nicht “nebendran” sondern “drüber” öffnen?

jojo

EDIT: Tschuldigung habe dich falsch verstanden. Dachte du meinst, wenn man auf Einstellungen klickt.

das neue Fenster ist ‘Einstellungen’, schon offen,
‘Sicherheit’ darin schaltet um

[JAPI]CardLayout[/JAPI] kann das erreichen, oder etwas sichtbarer [JAPI]JTabbedPane[/JAPI]
http://wiki.byte-welt.net/wiki/CardLayout
http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

manuell müsste man alte Panel removen, neue adden

Also so ähnlich wie in dem Firefox-Beispiel könnte man es mit JTabbedPane lösen (http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html), aber ich weiß nicht ob es das ist, was du willst.

EDIT: Oder vielleicht passt auch das CardLayout (http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)

Das könntest du z.B. mit einem CardLayout für den Content-Bereich hinbekommen. Eine TabbedPane ware auch ne Möglichkeit. Wenn du beides nicht verwenden möchtest, dann bleibt nur der manuelle Weg, der auch eigentlich gar nicht so schwer ist. Du musst im Grunde nur das Panel, das im Content-Bereich angezeigt wird, austauschen, sprich das alte Panel rauswerfen und das neue rein tun. Wenn dein Frame das standardmäßige BorderLayout verwendet, reicht es schon, wenn du einfach nur das anzuzeigende Panel mit add(neuesPanel) hinzufügst, das wird nämlich automatisch im Center-Bereich eingefügt und ersetzt das alte.

EDIT:
Mist, zu langsam :smiley:

Kann man dem JTabbedPane ein icon zuweisen ?

Ja, [klick](http://docs.oracle.com/javase/7/docs/api/javax/swing/JTabbedPane.html#addTab(java.lang.String, javax.swing.Icon, java.awt.Component))

PS: Wie benutzt man das japi-Tag richtig? :confused:

Wenn du einem einzelen Tab ein Icon hinzufügen willst, dann ja: tabbedPane.addTab(String title,Icon icon,Component component).

Als Component verwendest du dein JPanel, Titel und Icon ist ja selbsterklärend.

jojo

EDIT: Verdammt jetzt war ich langsamer :grr:

schöner Wettbewerb :smiley:

Benutze den Gui Builder

Davor würde ich dir abraten. Die GUI Builder machen unübersichtlichen Code der nur schwer nachzuvollziehen ist.

Schreibe die GUI selbst, dies bedeutet am Anfang sicher mehr arbeit, dafür gibt es das bessere Ergebnis

[QUOTE=headnut]Davor würde ich dir abraten. Die GUI Builder machen unübersichtlichen Code der nur schwer nachzuvollziehen ist.

Schreibe die GUI selbst, dies bedeutet am Anfang sicher mehr arbeit, dafür gibt es das bessere Ergebnis[/QUOTE]

Und man lernt, was man da eigentlich tut bzw. bekommt dafür ein Verständnis. Weiß gar nicht, warum alle scharf auf diese Klicki-Bunti-Designer sind … Die XML-basierten für FXML oder XAML sind eine Sache (braucht man zwar nich, sind aber ganz nett), aber die mit Codegenerierung sind Müll und schneller hat man es damit auch nicht gemacht als durch Tippen.

@Akeshihiro  Du kannst das [japi]-Tag von Hand schreiben:

[noparse][japi]JTabbedPane[/japi][/noparse] → [japi]JTabbedPane[/japi]

oder

du ziehst mit der Maus über den Namen der zu taggenden Java-Klasse und klickst danach im Menü des Editors auf diesen Button:[JAPI][/JAPI]

[QUOTE=L-ectron-X]@Akeshihiro Du kannst das [japi]-Tag von Hand schreiben:
[noparse][japi]JTabbedPane[/japi][/noparse] -> [japi]JTabbedPane[/japi]

oder

du ziehst mit der Maus über den Namen der zu taggenden Java-Klasse und klickst danach im Menü des Editors auf diesen Button:[/QUOTE]

Dann hab ich das doch richtig benutzt … Mir kam das mit Google im Link halt komisch vor.