图形用户界面不可见错误

时间:2015-04-02 18:16:47

标签: java user-interface button panel

我的主要代码

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 个答案:

答案 0 :(得分:0)

尝试将布局设置为框架

frame.setLayout(new FlowLayout());

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

答案 1 :(得分:0)

问题是您的PotLuckPanelJPanel,但您从不向其添加任何组件。

您无需创建“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);