(SOLUCIONADO: un WindowStateListener
y una llamada diferida a toBack
siempre que la ventana tiene el foco)Cómo hacer una ventana Unfocusable en Java
Hola a todos!
He estado tratando de averiguar cómo hacer un java.awt.Window
(cualquier subclase servirá) para que no se pueda llevar al frente. Estoy trabajando en un programa "tipo Samurize" de Java que aparece debajo de todas las ventanas de la aplicación y muestra Widgets en la pantalla. Al igual que "Always on top windows with Java", espero algo simple, con suerte una sola llamada a un método, si es posible, pero he verificado los documentos de la API y no he tenido suerte.
Edit: Lo siento, quise decir "siempre en el fondo" en lugar de simplemente "fuera de foco".
Aquí hay un caso de prueba básico. Al hacer clic en la ventana, no debe estar por sobre cualquier otro momento en la pantalla:
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
public Main() {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setFocusable(false);
setFocusableWindowState(false);
setBounds(new Rectangle(dim));
toBack();
}
public static void main(String[] args) {
new Main().setVisible(true);
}
}
Eso debería funcionar, pero al menos en mi Mac OS X 10.6 Sistema de la ventana se puede seguir enfocado. –
Editado, lo siento. Ver publicación. –
Aha! Me lo imaginé. Solo necesita diferir la invocación de 'toBack()' con 'NSTimer' cuando se hace el manejo de WindowStateListener. –