Удалите JFrame по нажатию кнопки от другого JFrame

1

Как известно многим, я полный новичок в Java. Я уже пытался исследовать это (читая другие сообщения в StackOverflow, Googling и спрашивая друга, который не является новичком java), но я не могу понять это. Ответ, вероятно, ясный и легкий, но я слеп. Я пытаюсь распорядиться JFrame из другого фрейма.

Мое приложение должно работать следующим образом:

  • Рамка X имеет кнопку, при нажатии: порождает рамку Y
  • Рамка Y имеет кнопку, при нажатии: создает кадр Z
  • В рамке Z есть кнопка при нажатии: выполняет метод из кадра Y перед удалением кадра Y и самого себя.

Получение кадра Z для размещения кадра Y - вот где большинство моих проблем. Любая помощь приветствуется. Идеальная помощь будет сформулирована таким образом, чтобы даже ребенок мог понять (потому что это мой уровень понимания Java).

Я знаю, что многие подумают, что это дублированный вопрос либо по этому вопросу, либо по этому другому вопросу. Я считаю, что это не дублирующий вопрос, потому что я прочитал оба и не понял, как решить мою собственную проблему.

  • 0
    @AndrewThompson Хотя я понимаю, что использование нескольких JFrames - плохая практика, я уже использую несколько JFrames и пока не знаю, как это сделать.
Показать ещё 2 комментария
Теги:
swing
jframe
dispose

2 ответа

2
Лучший ответ
  • В рамке 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, вероятно, не должны распространяться на какой-либо класс. Вместо этого они должны быть переменными экземпляра, которые используются по мере необходимости.

0

вы можете сохранить ссылку на другую 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);
   }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню