使用JPanel的Java组件

时间:2014-05-15 10:36:36

标签: java swing jframe jpanel jtextfield

我正在尝试在Java中创建一个JFrame,其中包含一个JPanel,它将包含一个组件。
我知道如何使用

添加组件 panelname.add(组分);

但我正在创建一个基于JTextField的类,并希望将整个CLASS作为组件添加到JPanel中,但是当我这样做时,Eclipse告诉我:
类型Container中的方法add(Component)不适用于参数(BetterText)

(BetterText是班级的名称)
所有它基本上都是,是一个带有方法等的JTextField设置的类,但我想将该类作为组件添加到JPanel。我查看了JTextField.java类,并且看不到任何有趣的东西,它看起来像普通类一样,但是你能够将该类的实例添加到JPanel,而对于我的,你不能。
任何帮助将不胜感激,谢谢 此外,如果您知道解决方案,请发布示例类。

编辑:添加了代码。

public BetterText(String defaultText) {
    super();
    //Sets up the textFields colours and the defaultText to display in it.
    setProperties();
    hasDefault = true;
    this.defaultText = defaultText;
    textField.addActionListener(this);
}

另一个编辑:

它还扩展了JTextField。

public class BetterText extends JTextField implements ActionListener {

2 个答案:

答案 0 :(得分:0)

确保您的JFrame,JPanel和JTextField扩展了正确的类(如果它们是自定义类)。

一些伪代码:

public class BetterText() extends JTextField{    
    public BetterText(){
        super();
    }   
}

然后创建GUI:

JFrame frame = new JFrame();
JPanel panel = new JPanel();
BetterText textField = new BetterText();
frame.add(panel);
panel.add(textField);
panel.pack();
panel.setVisible(true);

答案 1 :(得分:0)

验证您是否正在导入javax.swing.JComponent,然后使BetterText类继承自JTextField。