tutorial gui español ejemplo clase java swing jframe window

java - gui - Cómo configurar ventana siempre encima de cualquier otra aplicación



swing windows java (1)

Depende del sistema operativo. En general, no puede garantizar que su ventana siempre estará en la parte superior cuando se trata de ventanas nativas, y usted tampoco. El administrador de tareas siempre está en la parte superior por buenas razones.

Recuerdo que algunas versiones de Vista y sistemas anteriores de Windows permitían eso y las ventanas nativas y de Java terminaban peleando por el foco.

Tengo un JFrame que debe estar siempre encima de la otra aplicación. Para esto estoy usando el método setAlwaysOnTop() de la clase Window .

Aquí está mi código:

class Test1 extends JFrame { public Test1() { initComponents(); setTitle("Top Window"); setAlwaysOnTop(true); } private void initComponents() { jLabel1 = new JLabel(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); jLabel1.setHorizontalAlignment(SwingConstants.CENTER); jLabel1.setText("I am a top most window"); getContentPane().add(jLabel1, BorderLayout.CENTER); pack(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Test1().setVisible(true); } }); } private javax.swing.JLabel jLabel1; }

Esto funciona bien con algunas de las otras aplicaciones, como el bloc de notas, el explorador, etc., es decir, cuando mi aplicación está sobre el bloc de notas, todo funciona bien.

Pero cuando mi aplicación Java va por encima de cualquier aplicación que ya está en la parte superior, como administrador de tareas . Entonces el método setAlwaysOnTop() no funciona.

Lo que necesito es cualquier manera a través del cual pueda hacer que mi aplicación siempre esté en la cima.

También busqué muchas otras publicaciones relacionadas en stackoverflow, pero ninguna parece responder a mi pregunta. También he intentado otras formas, como anular el windowDeactivated(WindowEvent e)

addWindowListener(new WindowAdapter(){ @Override public void windowDeactivated(WindowEvent e) { toFront(); //requestFocus(); //requestFocusInWindow(); } });

pero esto tampoco funcionó.

¿Hay alguna otra manera a través de la cual pueda mi JFrame siempre encima de cualquier otra aplicación, excepto en el caso de las aplicaciones de pantalla completa?