Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有JPanel的Java组件_Java_Swing_Jframe_Jpanel_Jtextfield - Fatal编程技术网

带有JPanel的Java组件

带有JPanel的Java组件,java,swing,jframe,jpanel,jtextfield,Java,Swing,Jframe,Jpanel,Jtextfield,我试图用Java创建一个JFrame,其中包含一个JPanel,它将保存一个组件。 我知道如何使用 panelname.addcomponent; 但是我正在基于JTextField创建一个类,并希望将整个类作为组件添加到JPanel中,但是当我这样做时,Eclipse告诉我: 类型容器中的方法addComponent不适用于参数BetterText BetterText是该类的名称 所以它基本上就是一个带有JTextField设置和方法的类,但我想将该类作为组件添加到JPanel中。我查看了J

我试图用Java创建一个JFrame,其中包含一个JPanel,它将保存一个组件。 我知道如何使用 panelname.addcomponent; 但是我正在基于JTextField创建一个类,并希望将整个类作为组件添加到JPanel中,但是当我这样做时,Eclipse告诉我: 类型容器中的方法addComponent不适用于参数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 {

如果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);

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

请添加一些代码。BetterText从何扩展?BetterText应该扩展JTextField,您可能使用的是组合,而不是继承。感谢您提供的示例,我已经这样做了,但它只是告诉我将“textField”的类型更改为Component。@user3640377奇怪,JTextField是一个组件。你确定你没有在什么地方打错字吗?也许可以添加一些代码。谢谢,出于某种原因,它神奇地开始工作后,一些摆弄。再次感谢您的快速回复。请记住扩展您的自定义类,如果没有它,它只是另一个随机自定义类。