【发布时间】:2018-03-10 12:31:17
【问题描述】:
编辑: 我把我原来的问题留在下面。如果您希望使用 AnchorFX 源代码和我下面的代码来测试问题,您应该能够重新创建问题。它也发生在其他一些情况下,并且类似于这两个问题中的问题:Resize SwingNode in Pane 和How to resize Swing control which is inside SwingNode in JavaFX8? 他们的答案都没有证明对我有帮助,但也许我找到的答案会在未来对其他人有所帮助。
我在JScrollPane 中有一个JTable,我需要将它嵌入到javafx 应用程序中。我正在尝试使用AnchorFX docking framework 来做到这一点。我还需要这个 SwingNode 以某种方式位于 Control 内(我尝试过的两个是 ScrollPane 和 SplitPane),这样我就可以向它添加一个 ContextMenu ,这与应用程序的其余部分是一致的。
问题是,当我“停靠”和“取消停靠”选项卡或只是调整窗口或窗口内窗格的大小时,其中包含表格的 JScrollPane 无法正确调整大小。
我已经修改了 AnchorFX 项目中的一个演示来展示我的问题:
public class AnchorFX_substations extends Application {
@Override
public void start(Stage primaryStage) {
DockStation station = AnchorageSystem.createStation();
Scene scene = new Scene(station, 1024, 768);
DockNode node1 = AnchorageSystem.createDock("Node", generateJTableNode());
node1.dock(station, DockNode.DockPosition.CENTER);
DockNode subNode = AnchorageSystem.createDock("subNode 1", generateJTableNode());
subNode.dock(station, DockNode.DockPosition.LEFT);
subNode.floatableProperty().set(false);
DockNode subNode2 = AnchorageSystem.createDock("subNode 2", generateJTableNode());
subNode2.dock(station, DockNode.DockPosition.LEFT);
AnchorageSystem.installDefaultStyle();
primaryStage.setTitle("AnchorFX SubStation");
primaryStage.setScene(scene);
primaryStage.show();
}
private Control generateJTableNode() {
ScrollPane contextMenuPane = new ScrollPane();
SwingNode swingNode = new SwingNode();
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
// Create a couple of columns
model.addColumn("Col1");
model.addColumn("Col2");
// Append a row
for(int i = 0; i < 200; i++) {
model.addRow(new Object[]{"col 1 row " + i, "col 2 row "+i});
}
JScrollPane scrollPane = new JScrollPane(table);
swingNode.setContent(scrollPane);
contextMenuPane.setFitToHeight(true);
contextMenuPane.setFitToWidth(true);
contextMenuPane.setContent(swingNode);
return contextMenuPane;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】: