由于某些原因,我必须在自定义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来完成。但我想知道还有其他方法吗?
任何帮助都会受到高度关注。
答案 0 :(得分:4)
您添加的组件将添加到JDialog(JFrame,JWindow)的内容窗格中,而不是根窗格。
所以你可以试试
dialog.getContentPane().getComponents();
此外,这不会进行递归,因此只会将组件直接添加到内容窗格中。
如果您希望将所有组件添加到内容窗格及其子级,则可以使用Swing Utils。