我只是被app困住了。事情是在第二个actionListener中,我希望获得对象或更具体地访问我的JDialog类中的方法。
我创建的对话框很少,但不可见。在第一个actionListener中,我通过返回JDialog的getDialog函数找到它们。所以我可以看到它们中的每一个。 我需要帮助的第二个actionListener正在显示JOptionPane,如果用户选择了YES_OPTION,我想从特定的对话框中运行我的方法。
我不清楚我是否尝试修复我的解释,以便您能够理解它。
modifyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton thisButton = (JButton) e.getSource();
JPanel parentPanel = (JPanel) thisButton.getParent();
Container topLevel = parentPanel.getTopLevelAncestor();
MainFrame mainFrame = (MainFrame) topLevel;
mainFrame.getDialog(TABLECOUNTER).setVisible(true);
}
});
abortButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Object[] options = {"Tak", "Nie"};
int userReply = JOptionPane.showOptionDialog(null, "Czy na pewno chcesz anulować rachunek?", "Probujesz anulować rachunek!", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
if (userReply == JOptionPane.YES_OPTION) {
JButton thisButton = (JButton) e.getSource();
JPanel parentPanel = (JPanel) thisButton.getParent();
Container topLevel = parentPanel.getTopLevelAncestor();
MainFrame mainFrame = (MainFrame) topLevel;
mainFrame.getDialog(TABLECOUNTER).myMethod(); //here
}
}
});
答案 0 :(得分:0)
“我希望获得对象或更具体地访问我的JDialog类中的方法”
如果方法getDialog
返回标准JDialog
,
public JDialog getDialog(...) {}
然后你会遇到JDialog
的方法,没有适当的强制转换或更改返回类型。这可以解释为什么您能够在第一种方法中setVisible
,因为JDialog
确实有方法setVisible
。因此,要访问方法myMethod
,您需要进行一些投射。
((MyDialog)mainFrame.getDialog(TABLECOUNTER)).myMethod();