如何调整WorldWind面板的大小?

13
我想把一个 WorldWindowGLJPanel 放到一个 Pane 中,并且我想让它 可调整大小,但是无论我调用 resizesetSize 方法都不行。
这是 我的操作
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面板具有包含它的窗格的大小,并且我希望这个world wind面板是可调整大小的。

我考虑将我的world wind面板的大小设置为我的pane的大小,然后将我的worldwindpanel的大小与我的pane绑定,但是setSize函数不起作用

编辑:我找到了一种替代方案,即不使用窗格,而是直接使用SwingNode,现在可以自动调整大小。但是,如果你想使用一个窗格,还存在一个问题,你必须使用一个group。

1个回答

0
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在某种程度上破坏了调整大小的功能。所以我认为你应该尝试一下在这里提供的解决方案。

问题来自swingNode,但是另一个主题中的解决方案对我不起作用... - Evans Belloeil
如果我使用一个组,另一个主题的解决方案就会起作用。 - Evans Belloeil
我很高兴你解决了这个问题,我没有其他的想法。SwingNode功能只是为了向后兼容,如果你没有编写该库,连接基于swing的库总是有风险的。 - gaRos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接