簡體   English   中英

Java Swing:訪問另一個類的面板組件

[英]Java Swing: Access panel components from another class

嗨,我基本上有兩個類,一個主類和一個僅用於分隔面板的類,僅用於確保代碼的可讀性。

我有 :

public class Main{

   public static void main (String args[]) {
    JFrame mainJFrame;
    mainJFrame = new JFrame();

    //some other code here

    CenterPanel centerPanel = new CenterPanel();
    centerPanel.renderPanel();
    mainFrame.add(centerPanel.getGUI());

   }


}

class CenterPanel{
    JPanel center = new JPanel();

    public void renderPanel(){
        JButton enterButton = new JButton("enter");
        JButton exitButton = new JButton("exit");
        center.add(exitButton);
        center.add(enterButton);
    }

    public JComponent getGUI(){
        return center;
    }
}

上面的代碼工作完美。 它呈現包含輸入和退出按鈕的centerPanel。 我的問題是:

我仍然需要操作按鈕 ,例如更改顏色,添加一些動作偵聽器之類。 但是我無法再主目錄中 訪問它們,因為從技術上講它們是來自不同的類,因此在主目錄中,centerPanel是另一個對象。

如何訪問和使用按鈕(設置,動作監聽器等)? 即使他們來自另一個班級並且我仍然希望在主要課程中使用它?非常感謝!

使按鈕成為CenterPanel成員

class CenterPanel{
    JPanel center = new JPanel();

    JButton enterButton;
    JButton exitButton;

    public void renderPanel(){
        enterButton = new JButton("enter");
        exitButton = new JButton("exit");
        center.add(exitButton);
        center.add(enterButton);
    }

    public JButton getEnterButton()
    {
       return enterButton;
    }

    public JButton getExitButton()
    {
       return exitButton;
    }

    public JComponent getGUI(){
        return center;
    }
}

您在主要方法中引用了centerPanel。 調用centerPanel.renderPanel(); 這些按鈕將被添加到CenterPanel實例中JPanel類型的'center'引用中。 您可以通過調用centerPanel.getGUI();獲取“ center”的引用centerPanel.getGUI(); 在main方法中。這將返回JComponent類型的center引用。 JComponent是awt容器。因此,您可以調用center.getComponents() 這將返回JPanel中存在的數組中的所有組件。 即中心參考。 您可以迭代它們,獲取它們的類型,然后執行所需的任何操作。

暫無
暫無

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

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