Java Swing標準對話框

2018-01-09 19:23 更新

Java Swing教程 - Java Swing標準對話框


JOptionPane類使我們很容易創(chuàng)建和顯示標準模態(tài)對話框。

它包含許多靜態(tài)方法來創(chuàng)建不同類型的JDialog,用細節(jié)填充它們,并將它們顯示為模態(tài)的JDialog。

當(dāng)JDialog關(guān)閉時,該方法返回一個值以指示用戶對JDialog的操作。

JOptionPane類用作工廠來創(chuàng)建標準對話框。

我們可以顯示以下四種標準對話框:

  • Message Dialog
  • Confirmation Dialog
  • Input Dialog
  • Option Dialog

JOptionPane類的靜態(tài)方法顯示標準的JDialog具有名稱如show Type Dialog()。 類型可以替換為Message,Confirm,Input和Option。

JOptionPane類的靜態(tài)方法顯示標準的JDialog具有名稱如show Type Dialog()。 類型可以替換為Message,Confirm,Input和Option。...

所有四種類型的標準對話框都接受不同類型的參數(shù),并返回不同類型的值。

所有四種類型的標準對話框都接受不同類型的參數(shù),并返回不同類型的值。...

ID 參數(shù)/說明
1 組件parentComponent JDialog以父組件為中心。 如果它為null,JDialog將在屏幕上居中。
2 對象消息通常,它是一個字符串。 它還可以顯示Swing組件,圖標。 如果我們傳遞任何其他對象,則對該對象調(diào)用toString()方法,并顯示返回的字符串。 我們還可以傳遞一個對象數(shù)組,并且數(shù)組的每個元素將一個接一個地垂直顯示。
3 int messageType 設(shè)置消息的類型。 根據(jù)消息的類型,在對話框中將顯示一個適當(dāng)?shù)膱D標。 可用的消息類型有:
  • ERROR_MESSAGE
  • INFORMATION_MESSAGE
  • WARNING_MESSAGE
  • QUESTION_MESSAGE
  • PLAIN_MESSAGE
  • PLAIN_MESSAGE類型不顯示任何圖標。
    4 Int選項類型指定對話框上的按鈕。 我們可以使用以下選項。
    • DEFAULT_OPTION
    • YES_NO_OPTION
    • YES_NO_CANCEL_OPTION
    • OK_CANCEL_OPTION
    • DEFAULT_OPTION顯示確定按鈕。 其他選項顯示一組按鈕,如他們的名字建議。 我們可以通過為showOptionDialog()方法提供options參數(shù)來自定義按鈕和文本的數(shù)量。
      5 Int選項類型指定對話框上的按鈕。 我們可以使用以下選項。
      • DEFAULT_OPTION
      • YES_NO_OPTION
      • YES_NO_CANCEL_OPTION
      • OK_CANCEL_OPTION
      • DEFAULT_OPTION顯示確定按鈕。 其他選項顯示一組按鈕,如他們的名字建議。 我們可以通過為showOptionDialog()方法提供options參數(shù)來自定義按鈕和文本的數(shù)量。...
        6 字符串標題對話框的標題。 如果我們不傳遞此參數(shù),則提供默認標題。
        7 對象initialValue 設(shè)置在輸入對話框中顯示的初始值。

        通常,當(dāng)用戶關(guān)閉對話框時,我們要檢查用戶點擊的按鈕。 下面是常量列表,我們可以使用它來檢查與retuned值的相等性:

        • OK_OPTION
        • YES_OPTION
        • NO_OPTION
        • CANCEL_OPTION
        • CLOSED_OPTION

        CLOSED_OPTION表示用戶使用標題欄上的關(guān)閉(X)菜單按鈕關(guān)閉對話框。

        OK_OPTION表示用戶單擊對話框上的確定按鈕將其關(guān)閉。

        OK_OPTION表示用戶單擊對話框上的確定按鈕將其關(guān)閉。...

        對于對話框中的多個按鈕,0表示第一個按鈕單擊,1個表示第二個按鈕單擊,依此類推。

        對于對話框中的多個按鈕,0表示第一個按鈕單擊,1個表示第二個按鈕單擊,依此類推。...

        消息對話框顯示帶有OK按鈕的信息。 該方法不返回任何值。 showMessageDialog()方法的簽名如下所示:

        showMessageDialog(Component  parentComponent, Object  message)
        
        showMessageDialog(Component  parentComponent, Object message, String  title, int  messageType)
        
        showMessageDialog(Component  parentComponent, Object message, String  title, int messageType,   Icon  icon)
        

        消息對話框顯示帶有OK按鈕的信息。 該方法不返回任何值。 showMessageDialog()方法的簽名如下所示:...

        import javax.swing.JOptionPane;
        
        public class Main {
          public static void main(String[] args) {
            JOptionPane.showMessageDialog(null, "Message!", "FYI",
                JOptionPane.INFORMATION_MESSAGE);
        
          }
        }
        

        我們可以使用showConfirmDialog()方法顯示確認對話框。

        用戶的響應(yīng)由返回值指示。

        以下代碼顯示確認對話框,并處理用戶的響應(yīng):

        //from  w  ww  .j a  v a 2  s .c  om
        import javax.swing.JOptionPane;
        
        public class Main {
          public static void main(String[] args) {
            int response = JOptionPane.showConfirmDialog(null,
                "Save the file?",
                "Confirm  Save  Changes", JOptionPane.YES_NO_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE);
        
            switch (response) {
            case JOptionPane.YES_OPTION:
              System.out.println("yes");
              break;
            case JOptionPane.NO_OPTION:
              System.out.println("no");
              break;
            case JOptionPane.CANCEL_OPTION:
              System.out.println("cancel");
              break;
            case JOptionPane.CLOSED_OPTION:
              System.out.println("closed.");
              break;
            default:
              System.out.println("something else");
            }
        
          }
        }
        


        輸入對話框

        我們可以使用showInputDialog()方法請求用戶輸入,并為用戶的輸入指定一個初始值。

        如果我們希望用戶從列表中選擇一個值,我們可以傳遞一個包含該列表的對象數(shù)組。 UI將在合適的組件(如JComboBox或JList)中顯示列表。

        如果我們希望用戶從列表中選擇一個值,我們可以傳遞一個包含該列表的對象數(shù)組。 UI將在合適的組件(如JComboBox或JList)中顯示列表。...

        import javax.swing.JOptionPane;
        /*from w w  w. j av  a 2 s  .  c om*/
        public class Main {
          public static void main(String[] args) {
            String response = JOptionPane
                .showInputDialog("Please enter.");
        
            if (response == null) {
              System.out.println("cancelled.");
            } else {
              System.out.println("entered:  " + response);
            }
        
          }
        }
        

        上面的代碼中的showInputDialog()方法返回一個String,這是用戶在輸入字段中輸入的文本。

        如果用戶取消輸入對話框,則返回null。



        輸入對話框...

        以下代碼顯示帶有選項列表的輸入對話框。 用戶可以從列表中選擇一個選項。 此版本的showInputDialog()方法返回一個對象,而不是一個字符串。

        import javax.swing.Icon;
        import javax.swing.JComponent;
        import javax.swing.JOptionPane;
        //  w  w w.  j  a  v  a2s .co m
        public class Main {
          public static void main(String[] args) {
            JComponent parentComponent = null;
            Object message = "Please select";
            String title = "JOptionPane Input Dialog";
            int messageType = JOptionPane.INFORMATION_MESSAGE;
            Icon icon = null;
            Object[] selectionValues = new String[] { "A", "B", "C" };
            Object initialSelectionValue = selectionValues[2];
            Object response = JOptionPane.showInputDialog(parentComponent, message,
                title, messageType, icon, selectionValues, initialSelectionValue);
        
            if (response == null) {
              System.out.println("we have  cancelled the   input dialog.");
            } else {
              System.out.println("we entered:  " + response);
            }
          }
        }
        

        自定義選項按鈕

        我們可以使用showOptionDialog()方法自定義選項按鈕,該方法聲明如下:

        int showOptionDialog(Component parentComponent,  
                             Object message,
                             String title, 
                             int optionType, 
                             int  messageType,   
                             Icon  icon, 
                             Object[] options, 
                             Object initialValue)
        

        我們可以使用showOptionDialog()方法自定義選項按鈕,該方法聲明如下:...

        如果我們在options參數(shù)中傳遞組件,則組件將顯示為選項。 如果我們傳遞任何其他對象(如字符串),則會在options數(shù)組中為每個元素顯示一個按鈕。

        以下代碼顯示如何在對話框中顯示自定義按鈕。

        import javax.swing.Icon;
        import javax.swing.JComponent;
        import javax.swing.JOptionPane;
        /* ww w  .j a  v  a 2 s .c o m*/
        public class Main {
          public static void main(String[] args) {
            JComponent parentComponent = null;
            Object message = "How  is JOptionPane?";
            String title = "JOptionPane Option  Dialog";
            int messageType = JOptionPane.INFORMATION_MESSAGE;
            Icon icon = null;
            Object[] options = new String[] { "A", "B", "C" };
            Object initialOption = options[2];
            int response = JOptionPane.showOptionDialog(null, message, title,
                JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, icon,
                options, initialOption);
            switch (response) {
            case 0:
            case 1:
            case 2:
              System.out.println("we selected:" + options[response]);
              break;
            case JOptionPane.CLOSED_OPTION:
              System.out.println("we closed the   dialog box.");
              break;
            default:
              System.out.println("I don"t know what  we  did.");
            }
        
          }
        }
        

        自定義選項按鈕...

        以下代碼顯示如何在對話框中顯示自定義按鈕。...

        以下代碼顯示自定義可調(diào)整大小的對話框。

        import javax.swing.JDialog;
        import javax.swing.JOptionPane;
        
        public class Main {
          public static void main(String[] args) {
            JOptionPane pane = new JOptionPane("JOptionPane",
                JOptionPane.INFORMATION_MESSAGE);
            String dialogTitle = "Resizable Custom Dialog";
            JDialog dialog = pane.createDialog(dialogTitle);
            dialog.setResizable(true);
            dialog.setVisible(true);
        
          }
        }
        
        以上內(nèi)容是否對您有幫助:
        在線筆記
        App下載
        App下載

        掃描二維碼

        下載編程獅App

        公眾號
        微信公眾號

        編程獅公眾號