2010-10-17 27 views
7

Tôi đang cố gắng hiển thị hộp thoại phương thức ở phía trước Applet.Làm thế nào để mở một hộp thoại phương thức trong Java applet?

giải pháp hiện tại của tôi fetches các khung gốc như vậy:

Frame getMyParent() { 
    Container parent = getParent(); 
    while (!(parent instanceof Frame)) { 
     parent = ((Component)parent).getParent(); 
    } 
    return (Frame)parent; 
} 

Và tạo ra hộp thoại như sau:

public OptionsDialog(MainApplet applet, boolean modal) { 
    super(applet.getMyParent(), "options", modal); 
    // .... 

Tuy nhiên thường này cho thấy phương thức thoại dưới khung, mặc dù hành vi phương thức hoạt động chính xác.

Làm cách nào để khắc phục sự cố này?

Lý tưởng nhất là đối với các phiên bản Java 1.5 trở lên.

Trả lời

2

Sử dụng rỗng insterad của applet.getMyParent()

+0

Hmmm, sử dụng null sẽ thiết lập các khung chủ sở hữu cho 'SwingUtilities.getSharedOwnerFrame()' - Tôi sẽ kiểm tra, cảm ơn! – Nick

+0

Thật không may điều này không giải quyết được vấn đề, tôi chỉ được thử nghiệm với Chrome và nó luôn hiển thị bên dưới trang. – Nick

4
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this)); 
dialog.setModal(true); 
dialog.setSize(200, 200); 
dialog.setVisible(true); 
+0

Cảm ơn camickr. Thật không may điều này đòi hỏi phiên bản 1.6 và tôi đang mắc kẹt với hỗ trợ Java 1.5 (như rất nhiều người vẫn còn sử dụng này). Xin lỗi vì đã không làm rõ, tôi đã chỉnh sửa câu hỏi. – Nick

+0

Tôi không biết bất kỳ mã nào tôi đã đăng là duy nhất cho phiên bản 1.6. – camickr

+0

Tôi tìm thấy hàm tạo JDialog (Window) là 1.6 cụ thể: http://download.oracle.com/javase/6/docs/api/javax/swing/JDialog.html#JDialog(java.awt.Window) – Nick

3

Khung f = (Frame) SwingUtilities.getAncestorOfClass (Frame.class, ParentWindow); JDialog mới (f, true);

(source = http://kb.trisugar.com/node/7613) công trình cho ParentWindow = sun.plugin2.main.client.PluginEmbeddedFrame

Các vấn đề liên quan