好的,设置如下:面板中的 3 个组件(一个 JScrollpane、一个 JPanel 和一个 JTabbedPane)。
this.plan = new JPanel();
this.plan.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
//The ScrollPane
this.SrsDocument = new JTextArea();
this.SrsDocument.setEditable(false);
this.SrsDocumentScroll = new JScrollPane(this.SrsDocument);
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.33;
c.weighty = 1.0;
c.gridx = 0;
this.plan.add(this.SrsDocumentScroll, c);
...
//The Panel
this.TreePanel = new JPanel();
this.TreePanel.setLayout(new BoxLayout(this.TreePanel, BoxLayout.Y_AXIS));
this.Tree = new JTree();
((DefaultTreeModel)(this.Tree.getModel())).setRoot(null);
this.Tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
this.TreeScroll = new JScrollPane(this.Tree);
this.TreePanel.add(this.TreeScroll);
c.gridx = 1;
c.weightx = 0.33;
this.plan.add(this.TreePanel, c);
...
//The TabbedPane
this.currentFunction = new JTabbedPane();
c.gridx = 2;
c.weightx = 0.33;
this.plan.add(this.currentFunction, c);
我原以为这种布局有 3 列,宽度均等。但是初始显示 this.SrsDocumentScroll 的宽度比其他 2 窄得多。此外,当我调整窗口大小时 this.SrsDocumentScroll 被消耗,而另一个在 this.SrsDocumentScroll 完全消耗之前不会调整大小。我曾预计这三个都将调整大小,因为 this.plan 调整大小。weightx 是否像我假设的那样在调整大小时无法确定如何分配空间?
我还应该补充一点,这三个的内容是:textArea 填充了文本,树只是一个根,选项卡式窗格只有一个选项卡。所有的内容都是动态变化的,但调整大小并不是我遇到问题的行为,只是调整窗口大小,它消耗(随着窗口缩小)最左边->最右边而不是相等。
编辑:这更像是一个测试,这就是为什么我使用 0.33 作为我的 weightx 的原因。最终结果是选项卡窗格的权重比其他窗格要重。更像 (0.25,0.25,0.5) 但如果你跟我说这些值更易于管理。