Java I';我开始学习使用JFrame和JPanel。为什么我的代码不起作用?

Java I';我开始学习使用JFrame和JPanel。为什么我的代码不起作用?,java,swing,user-interface,jframe,jpanel,Java,Swing,User Interface,Jframe,Jpanel,我开始学习使用JFrame和JPanel。为什么我的代码不起作用? 出于某种原因,当我运行它时,JFrame确实会打开,但没有网格布局和边框 主要内容: 屏幕类: package test; import java.awt.Color; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.LineBorder; public c

我开始学习使用JFrame和JPanel。为什么我的代码不起作用? 出于某种原因,当我运行它时,JFrame确实会打开,但没有网格布局和边框

主要内容:

屏幕类:

package test;

import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

public class screen extends JFrame {

/**
 * 
 */

private cell[][] arr = new cell[3][3];

public screen()
{

    JPanel panel = new JPanel(new GridLayout(3, 3, 0, 0));



    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            panel.add(arr[i][j] = new cell());
        }
    }



    panel.setBorder(new LineBorder(Color.black, 1));
}

public class cell extends JPanel{

    private String type1;

    public cell()
    {
        type1 = "white";
        setBorder(new LineBorder(Color.red,1));
    }
}
}
封装测试;
导入java.awt.Color;
导入java.awt.GridLayout;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.border.LineBorder;
公共类屏幕扩展JFrame{
/**
* 
*/
专用小区[][]arr=新小区[3][3];
公共屏幕()
{
JPanel面板=新JPanel(新网格布局(3,3,0,0));
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
panel.add(arr[i][j]=新单元格());
}
}
面板.设置顺序(新线条边框(颜色为黑色,1));
}
公共类单元扩展了JPanel{
私有字符串类型1;
公共单元格()
{
type1=“白色”;
设置顺序(新的线边框(颜色为红色,1));
}
}
}

有什么问题吗?

您创建了JPanel面板,但没有添加任何内容。您应该将其添加到JFrame中,以便显示

// class name should start with an upper case letter.
public class Screen extends JFrame {

    // class name should start with an upper case letter.
    private Cell[][] arr = new Cell[3][3];

    public Screen() {

        JPanel panel = new JPanel(new GridLayout(3, 3, 0, 0));

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                panel.add(arr[i][j] = new Cell());
            }
        }

        panel.setBorder(new LineBorder(Color.black, 1));


        add(panel);  // ***** add panel to the JFrame *****
    }
}
//类名应以大写字母开头。
公共类屏幕扩展JFrame{
//类名应以大写字母开头。
专用小区[][]arr=新小区[3][3];
公共屏幕(){
JPanel面板=新JPanel(新网格布局(3,3,0,0));
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
panel.add(arr[i][j]=新单元格());
}
}
面板.设置顺序(新线条边框(颜色为黑色,1));
添加(面板);//****将面板添加到JFrame*****
}
}

您创建了JPanel面板,但没有添加任何内容。您应该将其添加到JFrame中,以便显示

// class name should start with an upper case letter.
public class Screen extends JFrame {

    // class name should start with an upper case letter.
    private Cell[][] arr = new Cell[3][3];

    public Screen() {

        JPanel panel = new JPanel(new GridLayout(3, 3, 0, 0));

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                panel.add(arr[i][j] = new Cell());
            }
        }

        panel.setBorder(new LineBorder(Color.black, 1));


        add(panel);  // ***** add panel to the JFrame *****
    }
}
//类名应以大写字母开头。
公共类屏幕扩展JFrame{
//类名应以大写字母开头。
专用小区[][]arr=新小区[3][3];
公共屏幕(){
JPanel面板=新JPanel(新网格布局(3,3,0,0));
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
panel.add(arr[i][j]=新单元格());
}
}
面板.设置顺序(新线条边框(颜色为黑色,1));
添加(面板);//****将面板添加到JFrame*****
}
}

谢谢您的帮助@用户3672173:不客气。@PetterFriberg:我不确定我是否理解你的评论。我在Swing wiki上给出了答案,因为这似乎是一个微不足道的问题。@PetterFriberg:问题本身的质量很低,因为这是一个微不足道的问题,所以我怀疑它对未来的访问者会有多大帮助。谢谢你的帮助@用户3672173:不客气。@PetterFriberg:我不确定我是否理解你的评论。我在Swing wiki上给出了答案,因为这似乎是一个微不足道的问题。@PetterFriberg:问题本身的质量很低,因为这是一个微不足道的问题,因此我怀疑它对未来的访问者会有多大帮助。