Как добраться до методов JDialog?

Я просто застрял в приложении. Дело во втором actionListener, я хочу получить объект или, точнее, доступ к методам в моем классе JDialog.

Я создал несколько диалогов, но их не видно. В первом actionListener я добираюсь до них с помощью функции getDialog, которая возвращает JDialog. Так что я могу видеть каждую из них. Второй 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
            }
        }
    });

person Damian Lesniak    schedule 16.04.2014    source источник
comment
Опубликуйте минимальный, полный и проверяемый пример, чтобы лучше понять, что происходит.   -  person Paul Samsotha    schedule 16.04.2014
comment
getDialog возвращает стандартный JDialog? Покажи метод.   -  person Paul Samsotha    schedule 16.04.2014
comment
Вы получаете сообщение об ошибке при попытке доступа к методу?   -  person Paul Samsotha    schedule 16.04.2014


Ответы (1)


«Я хочу получить объект или, более конкретно, доступ к методам в моем классе JDialog»

Если метод getDialog возвращает стандартный JDialog,

public JDialog getDialog(...) {}

Тогда вы застряли в методах JDialog без надлежащего преобразования или изменения типа возвращаемого значения. Это объясняет, почему вы можете setVisible в первом методе, потому что у JDialog есть метод setVisible. Итак, чтобы получить доступ к методу myMethod, вам нужно выполнить кастинг.

((MyDialog)mainFrame.getDialog(TABLECOUNTER)).myMethod();

person Paul Samsotha    schedule 16.04.2014