0

您好,感谢您事先的任何回复。我是 Java 编程的初学者,并决定用几个按钮制作一个基本的 J Frame。我正在努力自己解决这个问题,以及在继续下一步之前什么时候解决这个问题。下面我写了一些 J Frame 的代码,我将两个按钮都放在了我想要的位置,但是当我添加第二个按钮时,它与第一个按钮重叠。我想知道我是否以正确的方式处理这个问题以及如何改进它。

    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);
    }
}
4

1 回答 1

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);
}
于 2013-07-14T04:36:04.517 回答