我有一些表格应该在框架上从右到左和从上到下绘制。现在我使用绝对布局和协调工作。是否有任何BoxLayout
或任何其他 Java 布局可以做到这一点?我应该提到表的数量是动态的。
我的第二个问题是如何将这些表格停靠在框架上?我的意思是当框架调整大小时,表格保持它们在屏幕上的位置。
我有一些表格应该在框架上从右到左和从上到下绘制。现在我使用绝对布局和协调工作。是否有任何BoxLayout
或任何其他 Java 布局可以做到这一点?我应该提到表的数量是动态的。
我的第二个问题是如何将这些表格停靠在框架上?我的意思是当框架调整大小时,表格保持它们在屏幕上的位置。
大多数布局管理器都会尊重组件的方向:
panel.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
panel.add(...);
或者您可以随时将组件添加到容器的开头
panel.add(component1, 0);
panel.add(component2, 0);
如果要将事物排列到表格中,则可能需要使用网格。网格中的所有元素都应具有相同的大小。
要垂直排列某些项目,每行的大小可能会有所不同,请尝试以下操作:
static JPanel buildPanel() {
JPanel vPanel = new JPanel();
BoxLayout layout = new BoxLayout(vPanel, BoxLayout.Y_AXIS);
vPanel.setLayout(layout);
JPanel[] rowPanels = new JPanel[5];
int counter=1;
for (int i = 0; i < rowPanels.length; i++) {
rowPanels[i] = new JPanel();
rowPanels[i].setLayout(new FlowLayout(FlowLayout.LEFT, 2, 2));
rowPanels[i].add(new JButton("button " + counter++));
rowPanels[i].add(new JButton("Your button " + counter++));
rowPanels[i].add(new JButton("Shabutton"));
vPanel.add(rowPanels[i]);
}
return vPanel;
}
public static void main(String[] args) {
JFrame gridFrame = new JFrame();
gridFrame.add(buildPanel() );
gridFrame.pack();
gridFrame.setVisible(true);
}
您可以使用以下方法阻止整个 JFrame 调整大小gridFrame.setResizable(false);
您可以使用如下方法调用调整窗口大小时防止在行之间添加 sapce:
rowPanels[i].setMaximumSize(new Dimentsion(400,32));