带框架和面板的Java布局

时间:2014-04-21 09:28:22

标签: java swing layout-manager

我正在构建我的第一个Java swing GUI,但我无法设置我想要的布局。 你能帮我理解如何设置布局以获得所需的结果(见下图)?

这是我得到的(错误的): This is what I get (wrong)

如果我手动调整大小,我会得到所需的结果: nice!

这是我的代码:

public class MainClass implements Runnable {

private JButton load = new JButton("Load..");
private JButton save = new JButton("Save..");
private JButton clear = new JButton("Clear");
private JLabel displayFile = new JLabel();
List<String> lines;

JFrame frame = new JFrame("SimpleDrawing");

public static void main(String[] args) {
    MainClass maincl = new MainClass();
    SwingUtilities.invokeLater(maincl);

    }

@Override
public void run() {
    DrawingArea area = new DrawingArea();
    frame.setLayout(new FlowLayout());

    JPanel buttonPane = new JPanel();
    buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS));
    //buttonPane.add(Box.createHorizontalGlue());
    buttonPane.add(load);

    //buttonPane.add(Box.createRigidArea(new Dimension(5,0)));
    buttonPane.add(save);

    //buttonPane.add(Box.createRigidArea(new Dimension(5,0)));
    buttonPane.add(clear);
    buttonPane.add(displayFile);

    frame.add(buttonPane, BorderLayout.PAGE_START);
    frame.add(area, BorderLayout.CENTER);

    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}
}

1 个答案:

答案 0 :(得分:3)

你的Frame有FlowLayout。

frame.setLayout(new FlowLayout());

给它一个BorderLayout。

frame.setLayout(new BorderLayout());

布局 - 信息: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html