Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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
Java Swing-无法从JFrame访问的扩展JPanel类的方法和属性_Java_Swing - Fatal编程技术网

Java Swing-无法从JFrame访问的扩展JPanel类的方法和属性

Java Swing-无法从JFrame访问的扩展JPanel类的方法和属性,java,swing,Java,Swing,我正在做一个项目,我有一个名为HGraphic的类,它扩展了JPanel。此类有一个名为UpdateEnum的公共方法,该方法接收一个整数作为参数,并对其执行一些操作,更新一些元素 这个HGprahic类在我的项目的主类中有一个实例(主类扩展了JFrame)。。。我需要从发送变量作为参数的主类调用HGraphic的这个特殊方法 问题是,尽管该方法被声明为public,但我无法像通常那样通过正常的hGraphicInstance.method(变量)访问它 我已经阅读了JPanel文档,但没有发现

我正在做一个项目,我有一个名为HGraphic的类,它扩展了JPanel。此类有一个名为UpdateEnum的公共方法,该方法接收一个整数作为参数,并对其执行一些操作,更新一些元素

这个HGprahic类在我的项目的主类中有一个实例(主类扩展了JFrame)。。。我需要从发送变量作为参数的主类调用HGraphic的这个特殊方法

问题是,尽管该方法被声明为public,但我无法像通常那样通过正常的hGraphicInstance.method(变量)访问它

我已经阅读了JPanel文档,但没有发现任何地方表明您无法访问自定义方法。。。或者你不能创建setter(我需要的另一种方法)

当我实例化HGraphic类时,我使用JComponent类来实现它,这可能是原因吗

你有什么想法或建议吗?我非常希望能在这件事上透露一些情况。。非常感谢

我放置代码的主要位:

// CLASS CAUSING THE PROBLEM ------------------
public class HGraphic extends JPanel {

    // Attributes
    public int numberOfCoincidences = 0;

    // Constructor
    public HGraphic() {
        super(new BorderLayout());
    }

    public void updateNum(int tmpNum) {
        numberOfCoincidences = tmpNum;
    }
}

// MAIN FRAME CLASS ----------------------------------
public class HSFrame extends javax.swing.JFrame {

    private int newNum = 5;
    private JComponent newContentPane;

    public HSFrame() {
        initComponents();
    }

    private void initComponents() {
        newContentPane = new HGraphic();
        // HERE IS WHERE I WOULD LIKE TO ACCESS THE CLASS METHOD
        // NetBeans say it does not recognize this method :(
        newContentPane.updateNew(newNum);
    }
}
再次感谢你

因为您的实例(
newContentPane
)类型是
JComponent
。您需要将其定义为
HGraphic
或在方法调用之前强制转换它

private ***JComponent*** newContentPane;
需要更改为:

private HGraphic newContentPane;
或者在方法调用中:

((HGraphic) newContentPane).updateNum(newNum);
因为您的实例(
newContentPane
)类型是
JComponent
。您需要将其定义为
HGraphic
或在方法调用之前强制转换它

private ***JComponent*** newContentPane;
需要更改为:

private HGraphic newContentPane;
或者在方法调用中:

((HGraphic) newContentPane).updateNum(newNum);

如果那样行的话,我保证给你做一尊雕像!谢谢你的快速回答@埃杜:点击@mohammad shamsi答案旁边的绿色复选框接受。如果行得通,我保证给你做一尊雕像!谢谢你的快速回答@Edu:点击@mohammad shamsi答案旁边的绿色复选框接受。重新格式化代码;如果不正确,请还原。重新格式化的代码;如果不正确,请还原。