Domanda

Attualmente sto cercando di creare un pannello espandibile in Swing (simile al controllo Expander del WPF) e vorrei mantenere i soliti metodi per manipolarlo (ad esempio setLayout , aggiungi , ecc.). Solo loro dovrebbero essere indirizzati a un pannello incorporato (quello mostrato o nascosto).

Come si farebbe? Sostituire ogni metodo di JComponent e reindirizzarlo a un JPanel incorporato sarebbe ingombrante, ma è l'unico modo che vedo.

O dovrei piuttosto rendere visibile il pannello incorporato all'esterno e forzare gli utenti a usare qualcosa come ExpanderPanel.getInnerPanel () . Ma poi non è un sostituto drop-in per JPanel che penso sarebbe bello avere.

È stato utile?

Soluzione

In 1.5 (ish) Swing ha indirizzato alcuni metodi al riquadro del contenuto in JFrame , JApplet , ecc. Mentre sembravano esserci alcuni vantaggi di usabilità per coloro che hanno appena iniziato , in realtà non risolve il problema. Quindi tutti hanno a che fare con un'API che si comporta in modo molto strano. Quindi il mio consiglio è di evitare questo approccio.

Altri suggerimenti

Dai un'occhiata al JXTaskPane dal progetto Swingx . Fa già quello che ti serve.

Se hai un widget Contenitore che contiene un pannello che vuoi mostrare e nascondere, perché non layout il pannello interno come preferisci, quindi aggiungilo al pannello Contenitore, quindi usa metodi statici contro il Contenitore per dire

JPanel p = new JPanel (); // fai qualcosa con JPanel ...

ContainerWidget.setContent (p);

ContainerWidget.expandPanel (p, true);

Qualcosa del genere piacerebbe a questo lavoro?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top