[英]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.