2010-12-28 5 views
5

JOptionPane'in statik yöntemlerinden (ör. ShowMessageDialog) biri tarafından oluşturulan (JDialog?) Nesnesine başvuru tutulmasının mümkün olup olmadığını merak ediyorum? İletişim kutusunun ekranda göründüğü pozisyonu değiştirmeyi planlıyorum. Daha belirgin olarak, pencerenin varsayılan yerine pencerenin merkezi yerine iletişim penceresinin ana sol penceresinin sol üst köşesinde görünmesini istiyorum. Nesne bir referans olması, istenen etkiyi elde etmek için setLocation kullanmamı sağlar ...JOptionPane statik yöntemleriyle oluşturulmuş nesneye başvuru atılıyor

Herhangi bir öneri takdir edilecektir! Teşekkürler!

cevap

7

statik showXXXDialog() yöntemler sadece kolaylık içindir. JOptionPane için kaynak koduna bakarsanız, gerçekte, belirttiğiniz seçeneklere göre JOptionPane nesnesi oluşturulduğunu ve ardından JOptionPane.createDialog(...) çağrıldığını göreceksiniz. Farklı pozisyonda mesajınız iletişim göstermek için bir yöntem şudur: Eğer statik yöntemlerle yapardı her şeyi yapabilir,

JOptionPane pane = new JOptionPane("Message", JOptionPane.WARNING_MESSAGE, 
     JOptionPane.DEFAULT_OPTION); 
JDialog dialog = pane.createDialog("TITLE"); 
dialog.setLocation(0, 0); 
dialog.setVisible(true); 

// dialog box shown here 

dialog.dispose(); 
Object selection = pane.getValue(); 
JOptionPane kurucusuna parametrelerin bir kombinasyonuyla

ve JOptionPane küme yöntemleri, artı JDialog nesnesinin kendisine erişebilir.

DÜZENLENECEK : Ben ne showInputDialog uygulanması hakkında vs. showMessageDialog, showConfirmDialog, yukarıdaki başvuruda Ama nasıl görebilirsiniz

JOptionPane pane = new JOptionPane("Message", JOptionPane.QUESTION_MESSAGE, 
     JOptionPane.OK_CANCEL_OPTION, null, null, null); 
pane.setWantsInput(true); 
JDialog dialog = pane.createDialog(null, "Title"); 
dialog.setLocation(0, 0); 
dialog.setVisible(true); 

String str = (String) pane.getInputValue(); 
+0

Serin (OP için giriş iletişim örneğini eklemek için)? JDialog'da bir giriş metni alanını nasıl uygularım? – skyork

+0

@ user548240 - inputDialog –

+0

Cool'un bir örneğini ekledim, Cool'u sıfırdan inşa etmeyi düşünüyordum ve JOptionPane'de kullanılabilir yöntemler olduğunu bilmiyordum. Teşekkürler! – skyork

0

JOptionPane olacak (javax.swing.JOptionPane.showMessageDialog (Bileşen, Object) içinde örneğin) iletişim merkezi yeri belirlemek için verilen parentComponent (İlk yöntem parametresi) kullanan

You iletebilirim böyle örneğin, başka bir yere diyaloğu konumlandırır sahte bileşen:

JFrame frame = new JFrame("Test"); 
    frame.setLocation(100, 100); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

    // 'Invisible' fake component for positioning 
    JWindow c = new JWindow(); 
    c.setSize(0, 0); 
    c.setVisible(true); 
    Point location = frame.getLocation(); 
    location.translate(200, 100); 
    c.setLocation(location); 

    JOptionPane.showInputDialog(c,"Foo");