(SOLVED: a WindowStateListener
và một cuộc gọi hoãn lại để toBack
bất cứ khi nào cửa sổ là tập trung)Làm một Window Unfocusable trong Java
Xin chào tất cả!
Tôi đã cố gắng tìm ra cách tạo một java.awt.Window
(bất kỳ lớp con nào sẽ làm) để nó không thể được đưa lên phía trước. Tôi đang làm việc trên một chương trình Java "Samurize-like" xuất hiện bên dưới tất cả các cửa sổ ứng dụng và hiển thị Widget trên màn hình. Cũng giống như "Always on top windows with Java", tôi hy vọng cho một cái gì đó đơn giản, hy vọng chỉ là một cuộc gọi phương pháp duy nhất, nếu có thể, nhưng tôi đã kiểm tra thông qua các tài liệu API và tôi đã không có may mắn.
Chỉnh sửa: Xin lỗi, ý tôi là "luôn ở dưới cùng" thay vì chỉ đơn giản là "không tập trung".
Đây là trường hợp kiểm tra cơ bản. Khi nhấp vào cửa sổ, nó không nên đi trên bất kỳ những người khác hiện trên màn hình:
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);
}
}
Điều đó sẽ làm việc, nhưng ít nhất trên OS X Hệ thống máy Mac của tôi 10,6 cửa sổ vẫn có thể được tập trung. –
Đã chỉnh sửa, xin lỗi. Xem bài đăng. –
Aha! Tôi đã hiểu rồi. Bạn chỉ cần trì hoãn việc gọi 'toBack()' bằng 'NSTimer' khi thực hiện xử lý WindowStateListener. –