我正在使用Java和MiGLayout尝试重新创建此布局:
http://www.methvin.com/splitter/3csplitter.html
这样的事情:
换句话说,左侧和右侧面板需要“粘贴”到窗口的左侧和右侧,但也可以调整大小(并且在调整大小时不会按比例更改)
我尝试了很多东西,但调整大小始终是问题所在。以下是使用嵌套JSplitPane尝试执行此操作的当前代码。
public class MainGUI extends JFrame {
private String app_name = "Layout Test";
private int window_x_min = 700;
private int window_y_min = 450;
public MainGUI() {
setTitle(app_name);
setSize(window_x_min + 200, window_y_min + 100);
setMinimumSize(new Dimension(window_x_min, window_y_min));
setLocationRelativeTo(null);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
JPanel panel = new JPanel();
this.setContentPane(panel);
panel.setLayout(new MigLayout("","[]","[grow]"));
JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitpane.setContinuousLayout(true);
splitpane.setTopComponent(new JButton("middle"));
splitpane.setBottomComponent(new JButton("right"));
JSplitPane splitpane2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitpane2.setContinuousLayout(true);
splitpane.setDividerLocation(450);
splitpane2.setBottomComponent(splitpane);
splitpane2.setTopComponent(new JButton("left"));
panel.add(splitpane2, "push, grow");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
我已经设法让它最初加载我喜欢的方式,但是有以下问题:
似乎应用程序的左侧正在工作,我需要右侧以相同的方式运行。希望我有意义,谢谢!
答案 0 :(得分:1)
您需要管理调整拆分窗格时如何分配空间。这是通过使用setResizeWeight()
方法完成的。默认情况下,该值为0.0f,这意味着" left"组件是固定的。因此,您需要在其中一个拆分窗格上操作此属性。阅读API以获取有关此属性如何工作的更多信息。
我没有使用MigLayout,但使用标准BorderLayout进行简单测试只需要添加:
splitpane.setResizeWeight(1.0f);
另外,当您发布SSCCE时,请不要忘记包含main()方法,以便我们可以复制/粘贴/执行代码。我们不需要做任何额外的工作。