代码之家  ›  专栏  ›  技术社区  ›  Amit

JavaSwing——如何从其他JPAND中访问JPAND的JPr组件,两者都添加到JFrm中?

  •  1
  • Amit  · 技术社区  · 14 年前

    我正在开发一个JAVA桌面应用程序,其中GUI在Swing中实现。

    我有一个 JFrame . 我加了三个 JPanel 就这样。一 JPanel panel1 有一个开始按钮。现在,当用户按下panel1上的start按钮时,我想禁用其他jpanel上的各种组件。

    现在我如何从panel1访问其他面板的组件。

    我知道一种方法是首先得到panel1的容器

    panel1.getParent();
    

    然后得到容器的组件

    container.getComponents();
    

    根据需要使用。

    Q1。有没有其他方法可以让我完成同样的任务?(我想这是唯一的办法)

    Q2。在得到容器的组件列表后,如何区分一个容器和另一个容器?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Marcus Adams    14 年前

    您可以创建引用面板的实例变量,并使用这些变量引用面板。

    public class myFrame extends JFrame {
       public static JPanel buttonPanel;
       public static JPanel statusPanel;
    
       public static void main(String[] args) {
          buttonPanel = new JPanel();   
       }
    }
    
        2
  •  1
  •   Jim Kiley    14 年前

    我可能会有一个单独的应用程序层——一个保存对各个面板和开始按钮的引用的层——来处理这个操作。所以,当单击开始按钮时,它调用某种控制器对象的方法;控制器对象,它引用另一种 JPanel s,禁用其他组件。

        3
  •  1
  •   ZeissS    14 年前

    我会加一个 ActionListener 从外部到开始按钮:

    StartPanel panel1 = ...
    JPanel panel2 = ....
    
    panel1.getStartButton().addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) {
        setEnabledTree(panel2, false); 
      }
    }
    
        4
  •  0
  •   dominic    14 年前

    我会用“开始”按钮将对其他面板的引用传递到面板中。或者简单地在容器中有一个方法,它可以做您想要的事情并对其进行调用。