Domanda

Ho bisogno di scegliere un contenitore standard (JPanel?) In Swing che posso usare come segnaposto per cui posso aggiungere un altro componente personalizzato che si estende JPanel:

JPanel containerPanel;
// built by a library from a text file, automatically part of a nice layout
MyPanel componentPanel; 
// something complicated that I can't integrate with the builder library

containerPanel = builder.getMyContainerPanel();
componentPanel = new MyPanel(...);
containerPanel.add(componentPanel);

C'è un modo in qualche modo accoppiare le due dimensioni dei pannelli in modo che il ridimensionamento delle opere correttamente? Io non sono del tutto sicuro di come il ridimensionamento delle opere in altalena, ma quello che voglio è per il containerPanel esterno per essere un involucro sottile che è asservita alla mia componentPanel ei delegati del pannello esterno il più possibile al pannello interno.

Non voglio fare le cose in questo modo, ma sembra che il modo migliore per disaccoppiare la libreria costruttore dalla mia componente personalizzato.

È stato utile?

Soluzione

mi piacerebbe è sufficiente utilizzare un GridLayout .

containerPanel.setLayout(new GridLayout(1, 1));

Questo ha il vantaggio che si può semplicemente aggiungere il pannello di sub senza parametri ed è garantito per utilizzare l'intera area:

containerPanel.add(componentPanel);

Altri suggerimenti

È possibile utilizzare un BorderLayout e aggiungere il vostro contenitore delegato nella posizione BorderLayout.CENTER.

Hmm. Bene, ho deciso di riscrivere la mia componente, così invece di una classe che estende JPanel (eredità), utilizza la composizione ed è costruito con un JPanel vuote come un parametro + aggiunge componenti figlio al JPanel. Così posso utilizzare la libreria Builder per costruire le JPanel vuote, poi mi passare che nel costruttore di mia componente, così ora ho 1 JPanel invece di due di loro che devo continuare a accoppiati tra loro.

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