繁体   English   中英

Java Swing-如何从另一个添加到JFrame的另一个JPanel访问一个JPanel的JComponent?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM