2015-04-29 15 views
13

Voglio mettere un WorldWindowGLJPanel in un riquadro e voglio renderlo ridimensionabile, ma non posso, anche quando chiamo il metodo resize o setSize.Come ridimensionare il pannello WorldWind?

Ecco quello che sto facendo:

wwd = new WorldWindowGLJPanel(); 
wwd.setPreferredSize(new java.awt.Dimension(300, 300)); 
wwd.setModel(new BasicModel()); 

swingNode = new SwingNode(); 
swingNode.setContent(wwd); 

wwdPane = new Pane(); 
wwdPane.getChildren().add(swingNode); 

allora io uso questo wwdPane per visualizzare World Wind.

Desidero che il mio world wind panel abbia la dimensione del riquadro che lo contiene e voglio rendere ridimensionabile questo world wind panel.

ho pensato di dare la dimensione alla mia world wind panel della mia pane con un vicolo cieco setSize(PaneDimenson) e poi le dimensioni del mio worldwindpanel con il mio riquadro, ma la funzione setSize non funziona.

EDIT: Ho trovato una soluzione alternativa non utilizzando un riquadro, ma direttamente il nodo swing, il ridimensionamento ora è automatico. Ma se vuoi usare un pannello c'è ancora un problema, e sei costretto a usare un gruppo.

risposta

0

Il setSize funziona, provare questo codice:

scene.widthProperty().addListener(new ChangeListener<Number>() { 
    @Override public void changed(ObservableValue<? extends Number> o, Number b, Number a) { 
     Platform.runLater(new Runnable() { 
     public void run() { 
      wwd.setSize((int)(a.intValue()*0.5), wwd.getHeight()); 
     } 
     }); 

o con Java8

scene.widthProperty().addListener((o,b,a)->Platform.runLater(()-> 
    wwd.setSize((int)(a.intValue()*0.5), wwd.getHeight()))); 

ma non ho potuto fare il lavoro di ridimensionamento nel mio codice di esempio, perché lo SwingNode in qualche modo rovinare il ridimensionamento, penso che dovresti provare la soluzione consigliata here.

+0

Il problema deriva da swingNode, ma la soluzione nell'altro argomento non funziona per me ... –

+0

Se utilizzo un gruppo, la soluzione dell'altra argomento funziona. –

+0

Sono felice che tu l'abbia risolto, non ho avuto altra idea. Questa caratteristica di SwingNode è solo per la retrocompatibilità e credo che sia sempre rischioso connettersi con una libreria basata sullo swing se non si scrive quella libreria. – gaRos