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