在boxlayout中是否有“从上到下”和“从右到左”?

时间:2013-02-23 11:12:06

标签: java swing awt layout-manager boxlayout

我有一些桌子应该从框架的右到左和从上到下绘制。现在我使用绝对布局和协调工作。是否有任何BoxLayout或任何其他Java布局可以做到这一点?我应该提到表的数量是动态的。

我的第二个问题是如何将这些表格停靠在框架上?我的意思是我希望当帧调整大小时,表格会保持在屏幕上的位置。

2 个答案:

答案 0 :(得分:2)

大多数布局管理器都会尊重组件的方向:

panel.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
panel.add(...);

或者您可以随时将组件添加到容器的开头

panel.add(component1, 0);
panel.add(component2, 0);

答案 1 :(得分: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);
}

您可以使用gridFrame.setResizable(false);阻止整个JFrame调整大小 使用如下方法调用调整窗口大小时,可以防止在行之间添加sapce:

rowPanels[i].setMaximumSize(new Dimentsion(400,32));