簡體   English   中英

Swing-無法從JFrame訪問擴展JPanel類的方法和屬性

[英]Swing - Methods and attributes of an extended JPanel class inaccessible from JFrame

我正在一個項目中,我有一個名為HGraphic的類,該類擴展了JPanel。 此類具有一個稱為updateNum的公共方法,該方法接收一個整數作為參數並對其進行一些處理,從而更新某些元素。

這個HGprahic類在我的項目的主類中有一個實例(主類擴展了JFrame)...我需要從主類調用HGraphic的此特定方法,並將變量作為參數發送。

問題是,盡管該方法被聲明為public,但我無法像往常一樣通過正常的hGraphicInstance.method(variable)來訪問它。

我遍歷了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或在方法調用之前進行HGraphic

private ***JComponent*** newContentPane;

需要更改為:

private HGraphic newContentPane;

或在您的方法調用中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM