嗨我基本上有两节课, 一个主要的,一个只是为了分隔面板,只是为了代码可读性。
我有: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进入和退出。我的问题是:
我仍然需要操纵main中的按钮,比如更改颜色,添加一些动作侦听器等。但是在主中无法再访问,因为从技术上讲,它们来自不同的类,因此在main中,centerPanel是另一个对象。
如何访问按钮并使用它(set,actionlisteners等)?即使他们来自另一个班级,我仍然希望在主要内部使用它?非常感谢!
答案 0 :(得分:3)
使按钮成为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;
}
}
答案 1 :(得分:1)
您在main方法中引用了centerPanel。调用centerPanel.renderPanel();
后
这些按钮将添加到CenterPanel实例中JPanel
类型的“中心”引用中。您可以通过在main方法中调用centerPanel.getGUI();
来获取“中心”的引用。这将返回类型为center
的{{1}}引用。 JComponent是一个awt容器。所以,你可以调用JComponent
。这将返回JPanel中存在的数组中的所有组件。即中心参考。你可以迭代它们,得到它们的类型并做你想做的任何事情。