java - JPanel 中的 JButton

标签 java swing

我不知道为什么我的网格覆盖了我的按钮,我试图解决它,但我不能。谁能告诉我为什么?是不是因为我把所有的都放在BorderLayout里了?任何人都可以将播放按钮添加到其右侧吗?

public game() {
        make();
        JPanel p = new JPanel();

        frame.setLayout(new BorderLayout());
        resetButton = new JButton("Play");
        p.add(playButton, BorderLayout.EAST);
        frame.add(p);
}
public void make(){
        frame = new JFrame("Gamer");

        frame.setTitle("Gamer");
        JPanel m = new JPanel(new GridLayout(9,9));
        for(int i = 0; i < 9; i++) {
            for(int j = 0; j < 9; j++) {
                grids[i][j] = new JButton();
                m.add(grids[i][j]);
            }
        }
        frame.add(m, BorderLayout.CENTER);
        frame.setResizable(false);
        frame.setSize(width, heigth);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

最佳答案

本质上,您将 m(网格)和按钮面板添加到 BorderLayoutCENTER 位置

这里

frame.add(m, BorderLayout.CENTER);

p.add(playButton, BorderLayout.EAST);
frame.add(p); // adding to the CENTER position

BorderLayout 中的默认位置是 CENTER 位置。只需使用 frame.add(p, BorderLayout.EAST);,您就可以将按钮移动到右侧...

Layout

请注意,使用 setRessized 会出现问题,它会更改框架的边框大小,更改框架内容的可用空间,请始终在定义框架的大小之前调用此方法,这会导致应该用pack

来完成

如果可以的话,您确实希望避免在框架可见后修改其内容,因为这不仅会影响内容可能需要的空间,而且还需要您重新验证重新绘制容器。

更好的是,创建框架,然后将其传递给 gamemake 方法...

关于java - JPanel 中的 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538317/

相关文章:

c# - Java 序列化与 .NET 序列化

java - 自定义 addToDisplay 方法在另一个类中返回异常

JAVA 转换返回 XSLT 而不是转换结果

java - JTable 标题中的多个可编辑行

Java从paintComponent()外部绘制形状到bufferedImage?

java - 暂停和恢复挥杆计时器

java - 如何防止 JPopupMenu 关闭?

java - 将 Angular 连接到 Spring 时发生 CORS 错误(localhost 8080 <--> localhost 4200)

java - Selenium 网络驱动程序(Eclipse): importing issues using ctrl +shift +O

java - 如何将 JComboBoxes 和 JLists 中的信息显示到 JTextArea/JTextfield 中?