有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java图形用户界面不可见错误

我的主代码

import javax.swing.JFrame;

public class PotLuck {

private static JFrame frame;

public static void main(String[] args) {
    frame = new JFrame("POT LUCK V1.0");
    PotLuckPanel panel3 = new PotLuckPanel();
    frame.add(panel3);
    frame.setSize(300,300);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
}
}

我的PotLuckPanel课程

import java.awt.BorderLayout;

public class PotLuckPanel extends JPanel  {

private JLabel statusBar;
private int guessCounter=0;

public PotLuckPanel(){

JPanel panel = new JPanel(new BorderLayout());  
JPanel panel2 = new JPanel();

panel2.setLayout(new GridLayout(5,5));
for(int i=0 ; i< 25 ; i++){
    JButton buttoni = new JButton();
    panel2.add(buttoni);
}

statusBar = new JLabel("Number of guess:"+ guessCounter);
panel.add(statusBar, BorderLayout.NORTH);
panel.add(panel2, BorderLayout.SOUTH);
}
 }

按钮不可见,面板也不可见。只有一帧出现。编译时没有错误。我的错误是什么?我怎样才能修好它


共 (2) 个答案

  1. # 1 楼答案

    尝试将布局设置为“框架为”

    frame.setLayout(new FlowLayout());
    

    或主方法中的任何其他布局。它将是可见的

  2. # 2 楼答案

    问题是您的PotLuckPanel是一个JPanel,但您从未向它添加任何组件

    您无需创建“panel”变量。您只需设置类的布局,然后将组件直接添加到其中:

    //JPanel panel = new JPanel(new BorderLayout());  
    setLayout( new BorderLayout() ):
    
    ...
    
    //panel.add(statusBar, BorderLayout.NORTH);
    //panel.add(panel2, BorderLayout.SOUTH);
    add(statusBar, BorderLayout.NORTH);
    add(panel2, BorderLayout.SOUTH);