2012-08-29 92 views
2

该类的构造有问题吗?我想它的一个实例在另一个类添加到JPanel:将另一个类的面板实例添加到父面板

public class calculator2 extends JPanel { 
    public calculator2() { 
     JPanel x = new JPanel(); 
     x.setLayout(new GridLayout(0,5)); 

     x.add(new JLabel()); 
     x.add(new JButton("<<")); 
     x.add(new JLabel()); 
     x.add(new JButton(">>")); 
     x.add(new JLabel()); 
    } 
} 

这是我想使用它:

calculator2 test = new calculator2(); 
    JPanel panel3 = new JPanel(new BorderLayout()); 
    panel3.add(test, BorderLayout.SOUTH); 

我没有得到任何类型的运行时错误的,它只是不显示。当我将calculator2类中的代码放在同一个类中时,我在代码的第二部分中使用它。谢谢您的考虑。

这实际上只是一个例子,我有一个完整的类,使用actionlisteners之类的约25个组件,并希望使用上述方法将其添加到面板。

回答

5

在这里,您只是创建面板,而不添加任何地方看到。尝试使用从JPanel继承的父项方法,而不是在构造函数中创建另一个JPanel的新实例。

这将是,只是删除名为x的实例。

public class calculator2 extends JPanel { 
    public calculator2() { 
    super(); 
    setLayout(new GridLayout(0,5)); 

    add(new JLabel()); 
    add(new JButton("<<")); 
    add(new JLabel()); 
    add(new JButton(">>")); 
    add(new JLabel()); 
} 
} 
+2

而且,这不是很明显你用·Panel3中做什么,请确保你把它添加到一个容器,它dispayable – MadProgrammer

+0

+1好贴:) – MadProgrammer

+1

我明白我的想法如何是不正确的。我不需要创建一个JPanel的实例,因为通过使用extends关键字继承了所有的方法和构造函数。谢谢! –