Tôi có một JDialog
lấy tên từ người dùng. Đằng sau JDialog
, là một applet. Tôi không muốn người dùng truy cập vào applet đó cho đến khi anh ta nhập tên. Tôi đã thử JDialog.setAlwaysOnTop(true)
, nhưng applet ném một lỗi AccessException
. Vì vậy, những gì tôi đã làm là giữ một vòng lặp while sẽ thực hiện JDialog.setVisible(true)
cho đến khi JtextField
(đầu vào cho tên người dùng) trống (""). Nhưng đối với một số lý do này hoạt động thực sự chậm, có nghĩa là tải trọng JDialog
, nhưng phải mất thời gian để tập trung vào JTextField
và ngay cả khi người dùng nhập tên của mình, nó đến rất chậm ... như một nhân vật trong 2 giây ... bất kỳ cách nào khác cho tôi để buộc người dùng nhập tên trước khi truy cập vào applet?cách đảm bảo rằng JDialog luôn ở trên đầu trang
Trả lời
Sử dụng phương thức JDialog. Ví dụ: mã trong phương thức init (...) của JApplet của bạn có thể bao gồm:
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this));
dialog.setModal(true);
dialog.setSize(...);
dialog.setVisible(true);
Hoặc bạn chỉ có thể sử dụng JOptionPane.showInputDialog(). Một lần nữa, bạn chỉ cần chỉ định "this" làm thành phần cha của cửa sổ tùy chọn.
Nó chạy chậm vì chương trình đang xử lý mà foo loop
gì bạn có thể làm là thêm một người biết lắng nghe cửa sổ và sau đó là JDialog mất nó tập trung (hoặc applet giành nó) trả lại tập trung vào các JDialog.
Điều này sẽ hoạt động tốt hơn nhiều so với vòng lặp bạn đang sử dụng ngay bây giờ
Nếu ModalityTypes hoạt động cho applet, tôi sẽ đề xuất thay vào đó. Tôi không có thời gian để tìm hiểu, mặc dù. –
Tôi đã thêm một FocusListener vào JDialog và đã viết nội dung cho hàm focusLost() trong đó. Tuy nhiên, nó dường như không hoạt động. Nếu người dùng nhấp vào bên ngoài JDialog, nó sẽ không hiển thị lại. Tôi nghĩ rằng việc nhấp vào bên ngoài JDialog không làm cho JDialog mất tập trung, nó chỉ bị ẩn đi. – mithun1538
mmhhh, bạn có thể đăng một số mã mẫu không? – OscarRyz
Một lựa chọn khác sẽ là:
frame.setAlwaysOnTop(true);
Nó buộc hộp thoại trên đầu trang của bất kỳ khác.
- 1. Đảm bảo rằng Ngoại lệ luôn bị vô hiệu
- 2. Làm cách nào để đảm bảo rằng trang web mở ra bằng thanh cuộn ở giữa
- 3. Đảm bảo rằng trình duyệt web mở bằng trình quản trị web luôn ở trong tiêu điểm
- 4. Đảm bảo rằng Spring Bean được khởi tạo đúng cách
- 5. Làm thế nào để đảm bảo rằng std :: random_shuffle luôn tạo ra một kết quả khác?
- 6. Trộn danh sách, đảm bảo rằng không có mục nào ở cùng một vị trí
- 7. Làm cách nào để bạn có thể đảm bảo rằng người dùng biết họ đang ở trên trang web của bạn?
- 8. Làm thế nào tôi có thể đảm bảo rằng nhiệm vụ processResources của một bản xây dựng gradle luôn chạy?
- 9. Đảm bảo rằng các đối tượng thực hiện Comparable
- 10. Làm cách nào để giữ một bài viết cụ thể luôn ở trên đầu trang?
- 11. Đảm bảo trang web của tôi
- 12. Làm thế nào để tạo ra một JDialog phương thức trên đầu trang của một JDialog phương thức
- 13. Đảm bảo xác thực dựa trên cookie
- 14. Đảm bảo một trang web ASP.Net MVC
- 15. Đảm bảo không đảm bảo VirtualMachineError
- 16. Đảm bảo tập lệnh Javascript đầu tiên được chạy?
- 17. Làm thế nào để đảm bảo rằng một jnlp được chạy trên 64bits jvm
- 18. Làm cách nào để đảm bảo rằng nội dung tĩnh được lưu trữ ở phía máy khách?
- 19. Đảm bảo trang chỉ được truy cập qua SSL
- 20. Làm cách nào để tải tệp bên ngoài và đảm bảo rằng tệp chạy đầu tiên trong JSFiddle?
- 21. Đảm bảo JSONP?
- 22. Có cách nào để đảm bảo rằng các chức năng thành viên là ảo trong D?
- 23. SQL Server - Cách chèn một bản ghi và đảm bảo rằng nó là duy nhất
- 24. Làm thế nào để đảm bảo rằng jQuery của tôi. Đã chạy vào cuối
- 25. Log4J; làm thế nào để đảm bảo timestamps luôn luôn trong GMT bằng cách sử dụng ConversionPattern?
- 26. Làm cách nào để đảm bảo rằng wxFrame được đưa lên nền trước?
- 27. Cách đảm bảo rằng bạn không khởi động dịch vụ hai lần android
- 28. Làm cách nào để đảm bảo rằng strtol() đã trả về thành công?
- 29. JDialog không cần thiết phải hiển thị trên đầu trang của phụ huynh
- 30. D: Đảm bảo Tiêu hủy
chỉ là những gì tôi đang tìm kiếm. Cảm ơn. – mithun1538
Nhưng có một vấn đề. ActionListeners không còn đáp ứng. Và cũng có thể, người dùng có thể đóng hộp thoại (có một x ở phía trên bên phải của hộp thoại). Có bất kỳ điều gì tôi cần khôi phục sau khi người dùng đã nhập tên không? – mithun1538
Nếu bạn không muốn người dùng có thể đóng hộp thoại thì sử dụng: dialog.setDefaultCloseOperation (...); – camickr