2017-01-03 6 views
-3

У меня есть мой главный JFrame и еще один JDialog. Если пользователь нажмет на кнопку, я хочу, чтобы JDialog вызывал метод из этого JFrame (который содержит некоторые операции над ComboBox в этом JFrame). Как я могу это сделать? Я не хочу использовать MyJFrame form = new MyJFrame(); потому что он сделает новый JFrame, который я не хочу делать, я хочу вызвать метод из JFrame, который работает в настоящее время на моем компьютере. Спасибо.Как получить доступ к методу JFrame из JDialog?

ответ

0

Возможно, JOptionPane.showInputDialog(), показать JDialog для ввода данных от пользователя.

+0

К сожалению, я не могу этого сделать. У моего JDialog есть несколько ComboBoxes, TextArea и т. Д. ... Мне невозможно сделать InputDialog, как вы сказали. Ну ... возможно, это возможно, но у меня будет гораздо больше работы на взгляд на эту JOptionPane. – Persantarus

1

Предполагая, что JButton находится на JDialog.

Если оба находятся в одном классе, почему бы просто не сделать это?

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     //I just got clicked 
     form.doSomething(); 
    } 
}); 

, который может быть сокращен до

button.addActionListener(e -> form.doSomething()); 

Если они не являются, и вы расширяете JDialog (который я бы не рекомендовал) просто передать JFrame в конструкторе, то ваш диалог будет иметь доступ к нему.

Невозможно добавить гораздо больше, не видя больше своего кода.

+0

На самом деле ... это не так. В пакете «Просмотр» есть JFrame и JDialog, потому что программа основана на MVC. Это не так просто ...; p – Persantarus

+0

@Persantarus вы расширяете 'JDialog' во втором классе? Пройдите свой 'MyJFrame' в своем конструкторе и использовать это – Moira

+0

java.awt.EventQueue.invokeLater (новый Runnable() { общественных недействительный запуска() { нового JDialog (форма) .setVisible (истина); } }); <- Это дает мне ошибку "нестатическая переменная формы не может быть указана из статического контекста". Я создал переменную частную форму JFrame и в конструкторе this.form = form; – Persantarus

Смежные вопросы