Java Swing-无法从JFrame访问的扩展JPanel类的方法和属性
我正在做一个项目,我有一个名为HGraphic的类,它扩展了JPanel。此类有一个名为UpdateEnum的公共方法,该方法接收一个整数作为参数,并对其执行一些操作,更新一些元素 这个HGprahic类在我的项目的主类中有一个实例(主类扩展了JFrame)。。。我需要从发送变量作为参数的主类调用HGraphic的这个特殊方法 问题是,尽管该方法被声明为public,但我无法像通常那样通过正常的hGraphicInstance.method(变量)访问它 我已经阅读了JPanel文档,但没有发现任何地方表明您无法访问自定义方法。。。或者你不能创建setter(我需要的另一种方法) 当我实例化HGraphic类时,我使用JComponent类来实现它,这可能是原因吗 你有什么想法或建议吗?我非常希望能在这件事上透露一些情况。。非常感谢 我放置代码的主要位:Java Swing-无法从JFrame访问的扩展JPanel类的方法和属性,java,swing,Java,Swing,我正在做一个项目,我有一个名为HGraphic的类,它扩展了JPanel。此类有一个名为UpdateEnum的公共方法,该方法接收一个整数作为参数,并对其执行一些操作,更新一些元素 这个HGprahic类在我的项目的主类中有一个实例(主类扩展了JFrame)。。。我需要从发送变量作为参数的主类调用HGraphic的这个特殊方法 问题是,尽管该方法被声明为public,但我无法像通常那样通过正常的hGraphicInstance.method(变量)访问它 我已经阅读了JPanel文档,但没有发现
// 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答案旁边的绿色复选框接受。重新格式化代码;如果不正确,请还原。重新格式化的代码;如果不正确,请还原。