DÜZENLEME: Asıl sorumumu aşağıda olduğu gibi bıraktım. AnchorFX kaynak kodunu ve aşağıdaki kodumu kullanarak sorunu test etmek isterseniz, sorunu yeniden oluşturmalısınız. Diğer bazı durumlarda da gerçekleşir ve bu iki sorudaki sorunlara benzer: Resize SwingNode in Pane ve How to resize Swing control which is inside SwingNode in JavaFX8? Hiçbiri cevapları bana yardımcı oldu, ama belki de bulduğum cevap gelecekte başkalarına yardım edecek. SwingNode öğesinin üst öğesi yeniden boyutlandırılmadığında SwingNode içeriği yeniden boyutlandırmıyor
Ben
JTable
JScrollPane
bir iç var ve bir javafx uygulama içine gömmek gerekir. Bunu
AnchorFX docking framework kullanarak yapmaya çalışıyorum. Ayrıca bu SwingNode'a bir
Control
(denediğim iki tane
ScrollPane
ve
SplitPane
) içerisine de ihtiyacım var, böylece uygulamanın geri kalanıyla tutarlı olan bir
ContextMenu
ekleyebilirim.
Sorun şu ki, tabloyu kapattığımda ve 'çıkartarak' ya da pencerenin içindeki pencereleri veya pencereleri yeniden boyutlandırdığınızda, tablo içindeki JScrollPane
düzgün şekilde yeniden boyutlandırmıyor.
benim problem göstermek için AnchorFX projesinden demolar biri değiştirdiniz:
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);
}
}