संपादित करें: मैंने अपना मूल प्रश्न छोड़ दिया है, जैसा कि नीचे था, स्विंग नोड सामग्री का आकार बदलना नहीं है। यदि आप एंकरफैक्स स्रोत कोड और नीचे दिए गए मेरे कोड का उपयोग करके समस्या का परीक्षण करना चाहते हैं, तो आप समस्या को फिर से बनाने में सक्षम होना चाहिए। यह कुछ अन्य परिस्थितियों में भी होता है, और इन दो सवालों के मुद्दों के समान होता है: Resize SwingNode in Pane और How to resize Swing control which is inside SwingNode in JavaFX8? जिनके उत्तरों में से कोई भी मेरे लिए उपयोगी साबित नहीं हुआ, लेकिन शायद मुझे जो उत्तर मिला वह भविष्य में किसी और की मदद करेगा।स्विंगनोड के माता-पिता
मैं एक JTable
एक JScrollPane
अंदर है और मैं एक JavaFX आवेदन में एम्बेड करने के लिए की जरूरत है। मैं AnchorFX docking framework का उपयोग करके ऐसा करने की कोशिश कर रहा हूं। मुझे इस स्विंगनोड को किसी भी तरह 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);
}
}