2012-03-21 80 views
8

如何指定JOptionPane的位置。任何人都可以創建一個擴展JOptionPane.showInputDialog的類,該類還可以在x,y位置使用?JOptionPane showInputDialog位置

+0

我不認爲這是可能的。 – Mob 2012-03-21 15:43:10

+0

爲什麼相對於父組件的默認位置不可接受? – 2012-03-21 15:45:03

+0

+1,這個問題今天增加了一些我知道的知識:-) – 2012-03-21 16:38:51

回答

7

您可以使用JOptionPane's setLocation(...)方法。或者,您也可以使用JOptionPane來代替JDialog,然後在屏幕上指定它的位置。

這裏是勸通過@HovercraftFullOfEels一個工作代碼示例,只是這個例子可以幫助你從用戶那裏得到輸入,你問:

import javax.swing.*; 

public class OptionPaneLocation 
{ 
    private void createAndDisplayGUI() 
    {  
     JOptionPane optionPane = new JOptionPane("Its me" 
            , JOptionPane.PLAIN_MESSAGE 
            , JOptionPane.DEFAULT_OPTION 
            , null, null, "Please ENTER your NAME here"); 
     optionPane.setWantsInput(true);    
     JDialog dialog = optionPane.createDialog(null, "TEST"); 
     dialog.setLocation(10, 20); 
     dialog.setVisible(true); 
     System.out.println(optionPane.getInputValue()); 
    } 

    public static void main(String... args) 
    { 
     Runnable runnable = new Runnable() 
     { 
      public void run() 
      { 
       new OptionPaneLocation().createAndDisplayGUI(); 
      } 
     }; 
     SwingUtilities.invokeLater(runnable); 
    } 
} 
+0

默認情況下,JDialog是否沒有任何內容? – 2012-03-21 15:44:38

+0

沒錯,但它可以賦予相當於'JOptionPane'的功能,否則你可以在我的答案中指定的'JOptionPane'實例上使用'setLocation(...)'方法。 – 2012-03-21 15:48:07

+1

@Downvoter:小心分享你的智慧,關於話題,爲downvote。請高度讚賞,爲了學習新東西,如果有什麼不對,在我的解釋中:-) – 2014-11-05 01:52:54

5

一個JOptionPane中可以很容易地變成一個JDialog(看看JOptionPane API,它會告訴你如何與例子)。然後你可以設置創建的JDialog的位置。

例如,從文檔:

JOptionPane pane = new JOptionPane(arguments); 
pane.set.Xxxx(...); // Configure 
JDialog dialog = pane.createDialog(parentComponent, title); 
dialog.setLocation(....); // added! 
dialog.setModal(....); // added! Do you want it modal or not? 
// .... 
dialog.setVisible(true); 
+0

+1,這是一個很好的答案:-) – 2012-03-21 16:01:04

+0

@GagandeepBali:謝謝,同上。 – 2012-03-21 16:09:48

+0

+1,一如既往好。 – 2012-03-21 16:10:08