Hi có thể tạo hộp Java Swing JDialog
(hoặc loại đối tượng Swing thay thế), mà tôi có thể sử dụng để cảnh báo người dùng một sự kiện nhất định và sau đó tự động đóng hộp thoại sau khi trì hoãn; mà không cần người dùng phải đóng hộp thoại?Tôi có thể đặt giờ trên hộp Java Swing JDialog để đóng sau một số mili giây
10
A
Trả lời
7
Có - tất nhiên bạn có thể. Bạn đã cố gắng sắp xếp lịch biểu chưa?
JFrame f = new JFrame();
final JDialog dialog = new JDialog(f, "Test", true);
//Must schedule the close before the dialog becomes visible
ScheduledExecutorService s = Executors.newSingleThreadScheduledExecutor();
s.schedule(new Runnable() {
public void run() {
dialog.setVisible(false); //should be invoked on the EDT
dialog.dispose();
}
}, 20, TimeUnit.SECONDS);
dialog.setVisible(true); // if modal, application will pause here
System.out.println("Dialog closed");
Chương trình trên sẽ đóng hộp thoại sau 20 giây và bạn sẽ thấy dòng chữ "Dialog đóng" in ra cửa sổ Console
3
Tôi sẽ sử dụng một Timer Swing. Khi Timer kích hoạt mã sẽ được thực hiện trong Event Dispatch Thread tự động và tất cả các bản cập nhật cho GUI sẽ được thực hiện trong EDT.
Đọc phần từ hướng dẫn xoay trên How to Use Timers.
14
Giải pháp này dựa trên oxbow_lakes ', nhưng nó sử dụng một javax.swing.Timer, được dùng cho loại điều này. Nó luôn thực thi mã của nó trên chuỗi gửi sự kiện. Điều này quan trọng để tránh các lỗi tinh vi nhưng khó chịu
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame();
final JDialog dialog = new JDialog(f, "Test", true);
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
dialog.dispose();
}
});
timer.setRepeats(false);
timer.start();
dialog.setVisible(true); // if modal, application will pause here
System.out.println("Dialog closed");
}
}
Các vấn đề liên quan
- 1. Lịch Java nhận ngày hiện tại, không có giờ, phút, giây và mili giây, tính bằng mili giây
- 2. Java Ngày đến mili giây
- 3. Tại sao ngày thay đổi với cùng số mili giây trên các múi giờ khác nhau?
- 4. PHP - Chuyển đổi mili giây để Giờ: Phút: Seconds.fractional
- 5. chờ JDialog để đóng
- 6. Java Mili giây trong năm
- 7. java: chạy một hàm sau một số giây cụ thể
- 8. Javascript hiển thị mili giây như ngày: giờ: phút mà không có giây
- 9. Phương thức gọi sau 5 mili giây
- 10. Tạm dừng phương thức để đặt # mili giây
- 11. Làm cách nào để đóng hộp thoại Giao diện người dùng jQuery sau một giây?
- 12. Xóa nút "X" trong Swing JDialog
- 13. chuyển đổi một chuỗi ngày thành mili giây trong java
- 14. Làm thế nào để đóng một JDialog phương thức khi người dùng nhấp chuột bên ngoài JDialog?
- 15. Sử dụng String.Format trên một TimeSpan để xuất đầy đủ giây mà không cần mili giây
- 16. Java Swing: Tôi có thể đặt một nút ghi nhớ không yêu cầu nhấn alt không?
- 17. Python: Cách nhận số giây mili giây cho mỗi jiffy
- 18. Hiển thị dateiff là giây, mili giây
- 19. 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
- 20. Trình nghe Java trên hộp thoại đóng
- 21. Làm cách nào để chuyển đổi các đồng hồ bấm giờ thành giây nano, mili giây và giây?
- 22. Cách chuyển đổi mili giây thành giây.
- 23. tập lệnh đếm ngược javascript từ mili giây đến giờ-phút-giây
- 24. Chụp một thời gian trong mili giây
- 25. Làm thế nào để chuyển đổi mili giây thành giờ và ngày?
- 26. java swing JTextField đặt PlaceHolder
- 27. Đồng hồ bấm giờ Java cập nhật GUI mỗi giây?
- 28. Chuyển đổi mili giây để NSDate
- 29. NFS Fails sau khi đóng gói một hộp Vagrant
- 30. Java - JDialog unmovable
Bạn nên gọi dialog.setVisisble (false) trên chuỗi gửi sự kiện. Nếu không, hành vi mã là không thể đoán trước. –
Điều này rất đúng - tôi bỏ qua điều này vì lý do nhầm lẫn –