在我的Java Swing应用程序中,我有两个组件。左侧是导航(JList),右侧是JTable。我想留出增加窗口大小的可能性,而不增加两个组件的大小。
通过整个尺寸,保持50/50的比例。我使用GridLayout。这种行为是根植于LayoutManager还是必须设置的属性?
答案 0 :(得分:2)
据我所知,GridLayout管理器将所有单元格调整为相同大小。知道这一点你也可以使用它,只需将想要保持不变的组件添加到面板中,然后将此面板添加到单元格中。
或者使用不同的布局管理器我最喜欢的是TableLayout,您可以在其中设置哪些列/行应填充其余部分将保留其首选大小的空白区域。
祝你好运,博罗答案 1 :(得分:2)
GridbagLayout
将允许您实现此目标。但是,您是否还考虑使用左侧包含导航面板且右侧包含表格的JSplitPane
?您可以对其进行配置,以便通过调用setResizeWeight(0.0)
将所有额外空间分配到右侧。但是,您仍然可以灵活地允许用户在需要时手动调整导航区域的大小。您还可以通过在拆分窗格上调用setOneTouchExpandable(true)
来完全隐藏导航面板。
答案 2 :(得分:1)
建议:不要我们GridLayout。而是使用其他布局,如Borderlayout或GridBagLayout或布局的组合。例如,如果您使用BorderLayout,则可以使用JTable BorderLayout.CENTER和其他位置之一的JList。或者,如果您使用GridBagLayout,那么通过正确设置GridBagConstraint weightx和weighty值以及填充值(只知道您当前想要的内容),将允许选择性地放大添加到容器中的组件。