java - 尝试将多个 JPanel 添加到 JFrame

标签 java swing jframe jpanel layout-manager

我试图将这两个 JPanel 添加到 JFrame 中,但是只显示框架,没有添加任何内容。任何人都可以帮助我添加这些面板时缺少什么?

import javax.swing.*;
import java.awt.GridLayout;

public class grid_Base extends JFrame {

    JFrame mainp = new JFrame();
    JPanel p = new JPanel();
    JPanel p2 = new JPanel();
    clickButtons buttons[] = new clickButtons[100];

    public grid_Base() {

        super("Battleship");
        mainp.setSize(800, 1500);
        mainp.setResizable(true);
        mainp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainp.setVisible(true);

        p.setLayout(new GridLayout(10, 10));
        for (int i = 0; i < 100; i++) {
            buttons[i] = new clickButtons();
            p.add(buttons[i]);
        }
        mainp.add(p);

        p2.setLayout(new GridLayout(10, 10));
        for (int i = 0; i < 100; i++) {
            buttons[i] = new clickButtons();
            p2.add(buttons[i]);
        }
        mainp.add(p2);

    }
}

最佳答案

  1. 创建 UI 后,始终最后调用 setVisible(true);
  2. JFrame 使用 BorderLayout 作为默认布局,因此使用 mainp.add(p) 然后使用 mainp.add(p2) 将隐藏 p,因为只有 p2 会被布局...
  3. 不要从 JFrame 扩展(特别是因为您已经有了 JFrame 的实例字段),这只会让事情变得更加困惑...
  4. 通读一下 Code Conventions for the Java TM Programming Language ,这将使人们更容易阅读您的代码,也让您更轻松地阅读其他人
  5. 您的第二个循环将覆盖第一个循环生成的内容,这意味着当您尝试从数组中查找按钮时,您将只能找到在第二个循环中创建的按钮,而不能找到第一个循环中创建的按钮......

关于java - 尝试将多个 JPanel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26581332/

相关文章:

java - 如何使用 Java 将表格数据从 Web 获取到 Android 应用程序

Java 重写冲突 - 相同的名称但不同的返回类型

java - JFrame 自定义

java - KeyListener 在 JFrame 中随机工作

Java JLabel 和 JTextField 定位

java - 斯坦福基于精确字典的命名实体识别

java - org.hibernate.InstantiationException : How to tell Hibernate which class to use for object instantiation

java - 选中的复选框

java - JTextField 在 Eclipse 中一切看起来都正常,但无法编译

java - 关闭运行 OpenGL 内容的 JavaFX 窗口时出现奇怪的错误