JButton布局设置

时间:2013-07-21 21:30:33

标签: java swing layout jframe jbutton

在我的代码中,我的okButton出现错误,如此大而长,如何解决此问题?

public class d7Table extends JFrame {

public JTable table;
public JButton okButton;

public d7Table() {

        table = new JTable(myTableModel(res));
        okButton = new JButton("Ok");

    add(new JScrollPane(table), BorderLayout.CENTER);
    add(okButton, BorderLayout.PAGE_END);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(800, 600);
    this.setLocation(300, 60);
    this.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new d7Table();
        }
    });
}
}

我删除了不相关的代码。 enter image description here

3 个答案:

答案 0 :(得分:5)

您已将该按钮添加到SOUTH的{​​{1}}位置。这是BordrLayout的默认行为。

修复它,创建另一个BorderLayout,添加按钮,然后将面板添加到JPanel位置

看看

上面提到的方法通常称为复合布局,因为您使用一系列具有不同布局管理器的容器来实现所需的效果。

SOUTH

答案 1 :(得分:4)

因为JFrame的默认布局是BorderLayout,而PAGE_END意味着框架的底部水平如下:

enter image description here

您必须更改框架的布局,但不要这样做,只需创建一个面板,然后将组件添加到该面板,然后将面板添加到容器中。

JPanel p = new JPanel();
p.add(okButton);
add(p,BorderLayout.PAGE_END);

这里的一些链接可以帮助您了解有关通常使用的布局管理器的更多信息:

答案 2 :(得分:3)

import java.awt.*;
import javax.swing.*;

public class TableAndButton extends JFrame {

public JTable table;
public JButton okButton;

public TableAndButton() {
    table = new JTable();
    okButton = new JButton("Ok");

    add(new JScrollPane(table), BorderLayout.CENTER);
    JPanel bottomPanel = new JPanel();
    bottomPanel.add(okButton);
    add(bottomPanel, BorderLayout.PAGE_END);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //this.setSize(800, 600);  better to call pack()
    this.pack();
    //this.setLocation(300, 60);  better to..
    this.setLocationByPlatform(true);
    this.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new TableAndButton();
        }
    });
}
}