在我的代码中,我的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();
}
});
}
}
我删除了不相关的代码。
答案 0 :(得分:5)
您已将该按钮添加到SOUTH
的{{1}}位置。这是BordrLayout
的默认行为。
修复它,创建另一个BorderLayout
,添加按钮,然后将面板添加到JPanel
位置
看看
上面提到的方法通常称为复合布局,因为您使用一系列具有不同布局管理器的容器来实现所需的效果。
SOUTH
答案 1 :(得分:4)
因为JFrame
的默认布局是BorderLayout
,而PAGE_END
意味着框架的底部水平如下:
您必须更改框架的布局,但不要这样做,只需创建一个面板,然后将组件添加到该面板,然后将面板添加到容器中。
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();
}
});
}
}