Подтвердить что ты не робот

Как изменить размер WorldWind Panel?

Я хочу поместить WorldWindowGLJPanel в панель, и я хочу, чтобы сделал его изменяемым по размеру, но я не могу, даже когда я вызываю метод resize или setSize.

Вот что я делаю:

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); 

Затем я использую этот wwdPane для отображения World Wind.

Я хочу, чтобы мой world wind panel имел размер панели, которая содержит его, и я хочу сделать это world wind panel изменяемым.

Я подумал о том, чтобы указать размер моего world wind panel моего pane с setSize(PaneDimenson), а затем связать размер моей worldwindpanel с моей панелью, но функция setSize doesn работа.

EDIT. Я нашел альтернативное решение, не используя панель, но непосредственно swingNode, теперь размер автоматически. Но если вы хотите использовать панель, все еще есть проблема, и вы можете использовать группу.

4b9b3361

Ответ 1

Работает setSize, попробуйте этот код:

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());
         }
      });

или с Java8

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

Но я не мог сделать изменение размера в моем примере кода, потому что SwingNode каким-то образом испортил изменение размера, я думаю, вам стоит попробовать здесь.