Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按钮布局集_Java_Swing_Layout_Jframe_Jbutton - Fatal编程技术网

Java 按钮布局集

Java 按钮布局集,java,swing,layout,jframe,jbutton,Java,Swing,Layout,Jframe,Jbutton,在我的代码中,我的ok按钮坏了,那么大又长,如何解决这个问题 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(tab

在我的代码中,我的
ok按钮
坏了,那么大又长,如何解决这个问题

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();
        }
    });
}
}
我删除不相关的代码。
因为
JFrame
的默认布局是
BorderLayout
,而
PAGE\u END
表示框架的底部水平,如下所示:

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

JPanel p = new JPanel();
p.add(okButton);
add(p,BorderLayout.PAGE_END);
此处的一些链接可能有助于您进一步了解通常使用的布局管理器:

  • 我更喜欢使用它,因为它是一个非常灵活的布局管理器,试试看,它太棒了

因为
JFrame
的默认布局是
BorderLayout
,而
PAGE\u END
表示框架的底部水平,如下所示:

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

JPanel p = new JPanel();
p.add(okButton);
add(p,BorderLayout.PAGE_END);
此处的一些链接可能有助于您进一步了解通常使用的布局管理器:

  • 我更喜欢使用它,因为它是一个非常灵活的布局管理器,试试看,它太棒了

您已将按钮添加到
边界布局的
南部
位置。这是
BorderLayout
的默认行为

要修复它,请创建另一个
JPanel
,将您的按钮添加到其中,然后将面板添加到
SOUTH
位置

看看

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

JPanel buttonPane = new JPanel(); // FlowLayout by default
JButton okayButton = new JButton("Ok");
buttonPanel.add(okayButton);
add(okayButton, BorderLayout.SOUTH);

您已将该按钮添加到
边界布局的
位置。这是
BorderLayout
的默认行为

要修复它,请创建另一个
JPanel
,将您的按钮添加到其中,然后将面板添加到
SOUTH
位置

看看

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

JPanel buttonPane = new JPanel(); // FlowLayout by default
JButton okayButton = new JButton("Ok");
buttonPanel.add(okayButton);
add(okayButton, BorderLayout.SOUTH);


使用
okButton.setPreferredSize()
@Elist i add
okButton.setPreferredSize(新维度(20,30))但不是effect@Elist使用setPreferredSize是一个非常糟糕的主意,您没有考虑控制按钮大小计算方式的因素,此外,按钮受布局管理器的控制,布局管理器将忽略其组件的首选大小,这是一个错误。正如其他人所说,这就是BorderLayout的行为。使用
okButton.setPreferredSize()
@Elist i add
okButton.setPreferredSize(新维度(20,30))但不是effect@Elist使用setPreferredSize是一个非常糟糕的主意,您没有考虑控制按钮大小计算方式的因素,此外,按钮受布局管理器的控制,布局管理器将忽略其组件的首选大小,这是一个错误。正如其他人所说,这就是BorderLayout的行为。你能解释更多吗@Sajjad:你会想阅读布局管理器教程,因为它在那里的描述非常好。1+回答。@Sajjad:关于
“我试图通过反复试验来学习,不幸的是,我没有耐心从第一个开始学习!”
——如果你真的没有时间或耐心“从第一个开始学习”,那么你将无法学习Java,只是浪费你和我们的时间在这里提问。请证明我错了,并表明你愿意投入所需的时间和努力-我记得去年我开始swing的时候,我只是在没有学习的情况下碰运气,直到我创建了我的第一个项目,不幸的是,我无法完成它,因为在某些步骤中,我的代码和类就像一个无法理解我所做的事情的丛林@萨贾德:我告诉你我的故事,因为我没有走这条路,是一场灾难让我离开了爪哇。@Azad我真诚地感谢你的指导,我的穆斯林兄弟。你能解释更多吗@Sajjad:你会想阅读布局管理器教程,因为它在那里的描述非常好。1+回答。@Sajjad:关于
“我试图通过反复试验来学习,不幸的是,我没有耐心从第一个开始学习!”
——如果你真的没有时间或耐心“从第一个开始学习”,那么你将无法学习Java,只是浪费你和我们的时间在这里提问。请证明我错了,并表明你愿意投入所需的时间和努力-我记得去年我开始swing的时候,我只是在没有学习的情况下碰运气,直到我创建了我的第一个项目,不幸的是,我无法完成它,因为在某些步骤中,我的代码和类就像一个无法理解我所做的事情的丛林@萨贾德:我告诉你我的故事,因为我没有走这条路,这是一场灾难让我离开了爪哇。@Azad我真诚地感谢你的指导,我的穆斯林兄弟。1+像往常一样,代码不错,但你可能在浪费时间。请注意在Mad的回答中OP的评论。1+代码和往常一样不错,但你可能是在浪费时间。请注意Mad回答中OP的评论。