Как сделать Frame активным или самым верхним окном? - Java

Узнай цену своей работы

Формулировка задачи:

Помогите. Я делаю frame.setVisible(true); Окно появляется, но остается под активным приложением, в котором я работаю в данный момент. Мне нужно сделать что-то типа оповещающего окна, которое всегда при определенных условиях выскакивает наверх. А кроме того хорошо бы, чтобы выдавался сигнал на спикере.

Решение задачи: «Как сделать Frame активным или самым верхним окном?»

textual
Листинг программы
class ExitBox extends JDialog {
   ExitBox (JFrame parent) {
      super (parent, 'Exit', true);
      JLabel  question  = new JLabel  ('Are you sure ?', JLabel.CENTER);
      JButton noButton  = new JButton ('No');
      JButton yesButton = new JButton ('Yes');
      noButton.setMnemonic (KeyEvent.VK_N);
      yesButton.setMnemonic (KeyEvent.VK_Y);
      noButton.addActionListener (new ActionListener () {
         public void actionPerformed(ActionEvent e) {
            dispose ();
         }
      });
      yesButton.addActionListener (new ActionListener () {
         public void actionPerformed(ActionEvent e) {
            System.exit (0);
         }
      });
      JPanel topPanel    = new JPanel (),
             bottomPanel = new JPanel (new FlowLayout (FlowLayout.RIGHT));
      topPanel.setBorder (BorderFactory.createEtchedBorder ());
      topPanel.add (question);
      bottomPanel.add (noButton);
      bottomPanel.add (yesButton);
      getContentPane ().add (topPanel, BorderLayout.CENTER);
      getContentPane ().add (bottomPanel, BorderLayout.SOUTH);
      pack ();
      setSize (getPreferredSize ());
      setResizable (true);
      setLocationRelativeTo (parent);
 
      addWindowListener(new WindowAdapter() {
        public void windowDeactivated(WindowEvent e) {
         if(isVisible()){
          toFront();
          setCursor(Cursor.getDefaultCursor());
         }
        }
       }
      );
   }
}
 
............
 
label = new JLabel ('', Label.LEFT);
frame = new JFrame ('------------------');
frame.setSize (300, 100);
frame.getContentPane().add ('Center', label);
 
ExitBox theExitBox = new ExitBox (frame);
theExitBox.setVisible (true);
theExitBox.toFront();
theExitBox.setCursor(Cursor.getDefaultCursor());
 
..............

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы