Hello需要帮助将第二个JButton放在JFrame中

时间:2013-07-14 03:52:01

标签: java swing layout jframe jbutton

您好,感谢您提前回复。我是使用Java编程的初学者,并决定使用几个按钮创建一个基本的J Frame。我正在努力解决这个问题,以及何时在继续下一步之前弄清楚它。下面我写了一些J框架的代码,我将两个按钮放在我想要的位置,但是当我添加第二个按钮时,它重叠在第一个按钮上。我想知道我是否正在以正确的方式接近这个以及我如何改进它。

    Frame guiWindow = new Frame();
    JPanel pnlButton = new JPanel();
    JButton btnAdd = new JButton("A");
    JPanel pnlButton2 = new JPanel();
    JButton btnAdd2 = new JButton("B");

    public Frame1() {    

        //Button 1
        pnlButton.setLayout(null);
        btnAdd.setBounds(40, 300, 100, 50);  
        pnlButton.setBounds(40, 300, 50, 50);
        pnlButton.add(btnAdd);
        add(pnlButton);           

        //Button2        
        pnlButton2.setLayout(null);
        btnAdd2.setBounds(260, 300, 100, 50);  
        pnlButton2.setBounds(260, 300, 100, 50);
        pnlButton2.add(btnAdd2);
        add(pnlButton2);
        setSize(400, 400);
        setTitle("Pratice");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
}

1 个答案:

答案 0 :(得分:0)

好的,你是新手,这对于为什么会这样发生是完全可以理解的。首先要知道的是,当你将JPanel添加到JFrame中时;除非您正在进行某种定位或需要某些东西,否则您只需添加一个JPanel。这可能是它重叠的原因。您试图添加一个东西,然后在同一个区域添加另一个东西。您需要做的就是取出pnlButton2,并使用pnlButton作为添加按钮的主要方式:)您还可以使用名为GridLayout的布局管理器。这可能是非常令人困惑的事情,但我可以解释一下:

GridLayout是一种在JFrame或包含项目的任何类型的帧上创建网格效果的方法。它会将您的按钮与您选择的大小的网格对齐。

这是一个帮助解释更多信息的链接:GridLayout - Oracle Java Helper

但是这里有一些代码来解释我在谈论JPanels和东西时所说的内容:)

希望我帮助你,并没有让你迷惑

Frame guiWindow = new Frame();
JPanel pnlButton = new JPanel();
JButton btnAdd = new JButton("A"); 
//JPanel pnlButton2 = new JPanel(); not needed :)
JButton btnAdd2 = new JButton("B");

public Frame1() {


//Button 1

pnlButton.setLayout(null);
btnAdd.setBounds(40, 300, 100, 50);  
pnlButton.setBounds(40, 300, 50, 50);
pnlButton.add(btnAdd);
pnlButton.add(btnAdd2); // see how we add the second button?
add(pnlButton);

/* remove this section
//Button2        
pnlButton2.setLayout(null);
btnAdd2.setBounds(260, 300, 100, 50);  
pnlButton2.setBounds(260, 300, 100, 50);
pnlButton2.add(btnAdd2);
add(pnlButton2);
*/




setSize(400, 400);
setTitle("Pratice");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}