JPanel未在我的JFrame中显示,但在新窗口中显示

时间:2012-12-15 18:02:53

标签: java swing jframe jpanel japplet

我相信我做的事情很简单;我的研究让我无处可去。

我创建了一个独立的Java应用程序,我试图转换为applet运行。 (作为小程序是必需的)。

我创建了一个JPanel类MazePanel,我试图将其显示为applet。当我在Netbeans中运行我的Applet时,会加载2个窗口。一个是空白的Applet窗口,而另一个是我的迷宫。我希望迷宫(在MazePanel中实现)显示在我的applet中。任何人都可以看看这个,并告诉我我做错了什么。

public class MazeApplet extends JApplet {


protected JFrame frame;
protected JPanel jPanel;
protected MazeBuilder builder;
protected MazeFactory factory;

public MazeApplet() {
    //Set up frame
    frame = new JFrame("Maze -- Builder");
    frame.setLayout(new BorderLayout());

    frame.setVisible(true);
    frame.setResizable((true));

}

public void init() {

    factory = new ShoutMazeFactory();
    builder = new FactoryMazeBuilder(factory);
    Maze maze = MazeGameBuilder.createMaze(builder);
    maze.setCurrentRoom(1);
    jPanel = (new Maze.MazePanel(maze));
//Add jPanel to Frame
    frame.getContentPane().add(jPanel);
    frame.pack();
    }
}

以下是我试图展示的JPanel类

public class MazePanel extends JPanel{

protected Maze maze = new Maze();
  public void paint(Graphics g) {
Dimension dim = getSize(); 
g.setColor(Color.white);
g.fillRect(0, 0, dim.width, dim.height);    
g.setColor(Color.black);
  maze.draw(g);
  }    
}

1 个答案:

答案 0 :(得分:0)

在applet中工作时,您无法创建新帧,这是创建帧的原因。

在init()块中启动初始面板,然后根据需要使面板可见或不可见。