Tôi muốn kích hoạt ứng dụng Swing của mình theo chương trình. Tôi có nghĩa là tôi muốn viết mã mà gây ra các JFrame
để được nhìn thấy và tập trung (tiêu đề cửa sổ nên được đánh dấu). Tôi đã cố sử dụng requestFocus()
. Nó chỉ hoạt động nếu ứng dụng có ít nhất 2 cửa sổ A và B: A bị ẩn, B hiển thị. Bây giờ nếu tôi gọi A.requestFocus()
nó sẽ hoạt động như tôi muốn. Nó không xảy ra nếu ứng dụng chỉ có một cửa sổ hoặc nếu cả hai cửa sổ đều ẩn.Làm thế nào để kích hoạt cửa sổ trong Java?
Tôi đã tìm thấy 2 cách giải quyết.
- sử dụng khung không được trang trí trong suốt giả luôn ở trên cùng. Cửa sổ giả này sẽ đóng vai trò của cửa sổ B. Tôi không cố gắng thực hiện nó nhưng có vẻ như nó sẽ hoạt động.
- gọi
A.setAlwaysOnTop(true)
. Điều này mang lại cửa sổ A trên đầu trang của các cửa sổ khác. Nhưng nó vẫn chưa được tập trung. Sử dụngjava.awt.Robot
(mouseMove, mousePress, mouseRelease) để thực hiện một nhấp chuột vào tiêu đề của cửa sổ A. Bây giờ gọiA.setAlwaysOnTop(false)
và đưa con trỏ chuột trở lại vị trí trước đó của nó. Tôi đã triển khai mã và nó hoạt động nhưng trông giống như một giải pháp xấu.
Có giải pháp "đúng" không?
Theo như tôi có thể nói không có 'phương pháp Frame.setSelected' –
nó trong JInternalFrame –
Vâng, setSelected() chết không tồn tại cho đến nay ... – AlexR