Как известно многим, я полный новичок в Java. Я уже пытался исследовать это (читая другие сообщения в StackOverflow, Googling и спрашивая друга, который не является новичком java), но я не могу понять это. Ответ, вероятно, ясный и легкий, но я слеп. Я пытаюсь распорядиться JFrame
из другого фрейма.
Мое приложение должно работать следующим образом:
Получение кадра Z для размещения кадра Y - вот где большинство моих проблем. Любая помощь приветствуется. Идеальная помощь будет сформулирована таким образом, чтобы даже ребенок мог понять (потому что это мой уровень понимания Java).
Я знаю, что многие подумают, что это дублированный вопрос либо по этому вопросу, либо по этому другому вопросу. Я считаю, что это не дублирующий вопрос, потому что я прочитал оба и не понял, как решить мою собственную проблему.
- В рамке Z есть кнопка при нажатии: выполняет метод из кадра Y перед удалением кадра Y и самого себя.
Рамка Y и рамка Z должны быть модальными диалогами (по крайней мере, Z должен быть, возможно, также Y).
Когда диалог Y идет, чтобы открыть диалог Z (мы назовем его dialogZ
), код должен dialogZ
примерно так:
DialogZ dialogZ = new DialogZ(..);
dialogZ.setVisible(true);
this.setVisible(false); // at this point, dialogZ will have been closed
См. Раздел " Использование модальности в диалогах" для получения подробных сведений и кода примера.
(Frame Z)... выполняет метод из кадра Y
Рамка Y и Frame Z, вероятно, не должны распространяться на какой-либо класс. Вместо этого они должны быть переменными экземпляра, которые используются по мере необходимости.
вы можете сохранить ссылку на другую jframe в другом кадре. этот класс может выглядеть так:
Конструктор принимает jframe, который должен управляться из этого jframe.
class YourFrame {
public YourFrame(JFrame controlFrame){
//build the frame and a button, which action listener calls controlFrame.setVisible(false);
JFrame f = new JFrame();
f.setSize(800, 600);
JPanel content = new JPanel();
JButton button = new JButton();
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
controlFrame.setVisible(false);
}
}
content.add(button);
f.add(content);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}