EDIT: 私は元の質問を以下のように残しました。以下のAnchorFXソースコードと私のコードを使用して問題をテストしたい場合は、問題を再現できるはずです。それは他の状況でも起こり、次の2つの質問の問題に似ています。Resize SwingNode in PaneとHow to resize Swing control which is inside SwingNode in JavaFX8?どちらの回答も私にとって有益ではありませんでしたが、SwingNodeの親のサイズ変更時にSwingNodeのコンテンツのサイズが変更されない
私はJScrollPane
内部JTable
を持っていると私は、JavaFXアプリケーションにそれを埋め込む必要があります。私はAnchorFX docking frameworkを使ってこれをしようとしています。私もこのSwingNodeをControl
(私が試した2つはScrollPane
とSplitPane
です)の中に入れる必要がありますので、アプリケーションの残りの部分と一貫してContextMenu
を追加することができます。
問題は、タブをドッキング解除したり、ウィンドウ内のウィンドウやペインのサイズを変更したりするときに、テーブル内のテーブルを持つJScrollPane
が適切にサイズ変更されないことです。
:
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);
}
}