2010-11-13 8 views
5

Il codice ha un JPanel con un JPanel interno che mostra il disegno AWT. Sul mouseclick, JPanel interno deve essere sostituito da uno dei suoi fratelli polimorfici. Questo codice non sostituisce jPanel.Come sostituire un JPanel con un altro mentre il programma è in esecuzione


class ContentPanel extends JPanel {

private GraphicPanel graphicPanel; 

    public ContentPanel(GraphicPanel graphicPanel) { 
    this.graphicPanel = graphicPanel; 
    add(this.graphicPanel); 

    public void setGraphicPanel(GraphicPanel graphicPanel) { 
    this.graphicPanel = graphicPanel; 

// invalidate(); // revalidate(); // repaint(); }

Impostazione del graphicPanel ad un parente polimorfico non causa gli eventuali errori, semplicemente non è pittura il nuovo graphicPanel. L'utilizzo di cardLayout non è preferito, deve esserci un modo più pulito. Come procedere?

+2

Il modo più semplice è utilizzare un cardamento. – Starkey

+0

Ho usato cardLayout. funziona alla grande grazie ragazzi. –

risposta

3

in setGraphicPanel, è necessario rimuovere il GraphicPanel corrente e aggiungerne uno nuovo. POI chiamare riconvalida.

qualcosa di simile:

public void setGraphicPanel(GraphicPanel graphicPanel) { 
    this.removeAll(); 
    this.graphicPanel = graphicPanel; 
    this.add(graphicPanel); 
    this.revalidate(); 
} 

Sebbene CardLayout è stato progettato per fare proprio questa cosa. Sei sicuro di non voler usare CardLayout?

Problemi correlati