Java 将JButton置于定义的位置

Java 将JButton置于定义的位置,java,swing,jframe,jpanel,jbutton,Java,Swing,Jframe,Jpanel,Jbutton,我有一个问题,我在许多主题上搜索了如何在一个定义了位置的JPanel上放置JButton。我找到的最新答案是,我应该显示JFrame的布局,并将其设置为null,所以下面是我的代码。但问题是,当我将布局设置为null时,任何东西都不再起作用 package loto; import javax.swing.JFrame; import javax.swing.JButton; public class Accueil extends JFrame{ public Accueil(){

我有一个问题,我在许多主题上搜索了如何在一个定义了位置的JPanel上放置JButton。我找到的最新答案是,我应该显示JFrame的布局,并将其设置为null,所以下面是我的代码。但问题是,当我将布局设置为null时,任何东西都不再起作用

package loto;
import javax.swing.JFrame;
import javax.swing.JButton;

public class Accueil extends JFrame{
    public Accueil(){
        this.setTitle("Accueil du loto");
        this.setSize(1920,1080);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fond pan = new fond();
        JButton suivant = new JButton("Commencer le Loto");
        pan.setLayout(null);
        pan.add(suivant);
        suivant.setBounds(1800, 400, 40, 300);
        this.setContentPane(pan);

        while (true) {
            this.repaint();
        }
    }
}

当你刚开始荡秋千的时候,你必须一步一步走

  • 确保将JPanel添加到JFrame中。。。方盘=新方盘();它是JPanel子类吗?你不需要这样做,你可以 创建JPanel jp=newjpanel()
  • 通过在构造函数中调用this.add(jp),将这个JPanel组件添加到JFrame
  • 每个Swing显示的三个重要属性是a)setVisible b)setLayout c)setContentPane d)add
  • 您已将JButton添加到Jpanel,但尚未将Jpanel添加到JFrame
  • 在构造函数中添加属性this.add(pan)、this.setLayout(new FlowLayout())


    从构造函数中删除while循环

    使用空布局,您必须为JButton设置大小和位置,如下所示:

    suivant.setSize(120,20);
    suivant.setLocation(x,y);
    

    这是因为您将布局设置为空。不要这样做。layoutmanager将为您进行布局。简单的一个是BorderLayouth看看,加上这段代码没有任何用处:
    while(true){this.repaint();}
    ,因为它有可能冻结您的GUI,使其变得无用。“…当我将布局设置为null时,任何东西都不起作用了。”是的。这就是没有经验丰富的开发人员会向新手推荐它们的原因之一。提供最小尺寸的ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度。顺便说一句-
    this.setSize(19201080)
    在许多桌面计算机设置中,这听起来似乎接近“全屏”。如果这是目标,我建议..我可能不知道怎么做,但如果设置布局为边框,我的按钮将放置在中心或基数。我还没有找到一种方法来设置JButton与BorderLayout之间所需的协调。是的,这是全屏的目标。谢谢,我会尽可能地尝试它。流程布局允许我将JButton放在任何我想要的地方吗?不。FlowLayout通常按从左到右的顺序放置组件。对于测试,我使用了FlowLayout。一旦为FlowLayout显示组件,您必须更改setLayout(null)和setBounds(x、y、宽度、高度)以将组件固定在特定位置。我保留了null布局,但它现在可以工作:)谢谢。我刚刚加了这个;在平底锅前添加(JButton);