mal*_*ney 5 java swing jpanel miglayout layout-manager
我希望在使用 MigLayout 到达屏幕的“边缘”时包装 JPanel。目前我有一个 JScrollPane(我只想启用它)。JScrollPane 包含任意数量的水平排列的 JPanel - 当添加面板时,jpanel 会脱离边缘,我希望它添加到下一行。这可能吗?
这是代码:
public void setupPanels(){
JScrollPane scrollPane = new JScrollPane();
JPanel mainPanel = new JPanel(new MigLayout("insets 2"));
for (Object object : objects){
JPanel subPanel = new JPanel(new MigLayout("insets 0"));
mainPanel.add(subPanel, "alignx left, gapx 2px 5px, gapy 2px 2px, top");
}
scrollPane.setViewportView(mainPanel);
}
Run Code Online (Sandbox Code Playgroud)
另外,要添加一个额外的因素,每次到达边缘时我都需要添加一个新的/不同的面板(时间线)-那么有没有办法找出它何时会换行?
谢谢,
MigLayout没有这样的功能。它基于网格,虽然您可以使用该nogrid选项在单元格范围内水平或垂直流动组件,但不能使它们流动到下一行或下列。
java.awt.FlowLayoutJDK中包含的内容会自动包装所包含的组件:
JPanel mainPanel = new JPanel(new FlowLayout());
mainPanel.add(subPanel1);
mainPanel.add(subPanel2);
mainPanel.add(subPanel3);
...
Run Code Online (Sandbox Code Playgroud)
首选高度已关闭,但有一些方法可以解决此问题,请参阅WrapLayout。
至于第二个要求:
另外,要添加一个额外的因素,每次它到达边缘时,我都需要添加一个新的/不同的面板(时间线) - 那么有没有办法找出它何时会换行到新行?
布局管理器应该布局已经添加到容器中的组件,而不是根据布局的结果添加新组件。在布局管理器按需显示的每个子面板后面添加不可见的时间线占位符组件可能会起作用。
您肯定需要一个自定义布局管理器来执行此操作。首先,我建议获取FlowLayout. 在layoutContainer实现中,有一个循环遍历所有组件。换行后,检查下一个组件是否是时间线占位符组件,使其可见并再次换行。
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |