Der beste Weg, von Subklassen ein JPanel in Swing
Frage
Ich versuche zur Zeit eine wachsende Platte in Swing zu bauen (ähnlich den Expander
Kontrolle des WPF) und ich mag die üblichen Methoden halten für sie zu manipulieren (i. E. setLayout
, add
, etc.). Nur sollten sie auf eine eingebettete Platte verlegt werden (die eine ein- oder ausgeblendet werden).
Wie würde man das tun? jede Methode von JComponent
Aufschalten und Re-Routing, das zu einem eingebetteten JPanel
wäre umständlich, aber das ist der einzige Weg, wie ich sehe.
Oder sollte ich lieber die eingebettete Platte nach außen und Kraft Benutzer sichtbar machen, anstatt etwas wie ExpanderPanel.getInnerPanel()
zu verwenden. Aber dann ist es kein Drop-in-Ersatz für JPanel
was ich denke, wäre schön zu haben.
Lösung
1.5 (ish) Schwingen geroutet ein paar Methoden zur Inhaltsfenster in JFrame
, JApplet
usw. Während für diejenigen, es erschienen einige Usability-Vorteile zu sein, gerade erst anfangen, ist es nicht wirklich das Problem zu beheben. So hat jeder mit einem sehr seltsam verhaltenden API befassen. Also mein Rat ist, diesen Ansatz zu vermeiden.
Andere Tipps
Werfen Sie einen Blick auf die JXTaskPane SwingX Projekt. Es ist bereits das tut, was Sie brauchen.
Wenn Sie einen Container-Widget haben, die eine Platte halten Sie wollen zeigen und verstecken, warum nicht Layout Ihre Innenplatte, wie Sie wollen, dann fügen Sie es den Container-Panel, dann statische Methoden gegen den Container verwenden zu sagen
JPanel p = new JPanel (); // Etwas mit dem JPanel ...
ContainerWidget.setContent (p);
ContainerWidget.expandPanel (p, true);
möchten uns an dieser Arbeit somethign?