如何获得自定义JDialog的后代组件?

时间:2013-05-03 21:52:24

标签: java swing jdialog

由于某些原因,我必须在自定义JDilog中获取组件。我试着这样做:

 private class RepoListDialog extends JDialog {
    public RepoListDialog(JFrame jf, String message){
    //do something
    JButton btConfirm = new JButton("Confirm");
    btConfirm.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){         
    for(Component c : RepoListDialog.this.getComponents()){
    //do something}
    }
    });
    this.add(btConfirm);
    //do something
    }
    }

但它不起作用。 我想知道如何自己获取本对话中添加的组件? 我知道可以通过使用rootPane来完成。但我想知道还有其他方法吗?

任何帮助都会受到高度关注。

1 个答案:

答案 0 :(得分:4)

您添加的组件将添加到JDialog(JFrame,JWindow)的内容窗格中,而不是根窗格。

所以你可以试试

dialog.getContentPane().getComponents();

此外,这不会进行递归,因此只会将组件直接添加到内容窗格中。

如果您希望将所有组件添加到内容窗格及其子级,则可以使用Swing Utils