[英]Java Swing - How to access a JComponent of one JPanel from other JPanel, both added to the JFrame?
我正在开发带有在SWING中实现的GUI的Java桌面应用程序。
我有一个JFrame
。 我在上面添加了三个JPanel
。 一个JPanel panel1
具有一个“开始”按钮。 现在,当用户按下面板上的开始按钮时,我想禁用其他JPanel上的各种组件。
现在如何从panel1访问其他面板的组件。
我知道一种方法是首先获取panel1的容器
panel1.getParent();
然后获取容器的组件
container.getComponents();
并根据需要使用它们。
Q1。 我还有其他方法可以执行相同的任务吗? (我认为这是唯一的方法)
Q2。 获取容器的组件列表后,如何区分一个容器与另一个容器?
我可能会在应用程序的另一层中-负责保存对各个面板和开始按钮的引用-处理此操作。 因此,当单击开始按钮时,它将在某种Controller对象上调用一个方法。 引用了其他JPanel
的Controller对象将禁用其他组件。
我将从外部将ActionListener
添加到“开始”按钮:
StartPanel panel1 = ...
JPanel panel2 = ....
panel1.getStartButton().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setEnabledTree(panel2, false);
}
}
您可以创建创建面板时引用面板的实例变量,并使用这些变量来引用面板。
public class myFrame extends JFrame {
public static JPanel buttonPanel;
public static JPanel statusPanel;
public static void main(String[] args) {
buttonPanel = new JPanel();
}
}
我将使用“开始”按钮将对其他面板的引用传递到面板中。 或者只是在容器中有一个方法,它可以完全满足您的要求并对其进行调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.