首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Swing 標準對話框完全指南:JOptionPane 實戰詳解

     編輯:Java 相關知識

四大標準對話框類型

類型方法用途典型返回值
確認對話框showConfirmDialog()詢問用戶是/否決定JOptionPane.YES_OPTION / NO_OPTION / CANCEL_OPTION
輸入對話框showInputDialog()獲取用戶文本輸入或選擇String / Object (選擇項)
消息對話框showMessageDialog()純信息展示無 (void)
選項對話框showOptionDialog()完全自定義按鈕組合int (按鈕索引 0-based)

所有對話框均為**模態**,阻塞調用線程直到用戶響應。

核心參數詳解

  • parentComponent:父窗口 (null 為屏幕居中)
  • message:提示文本/對象
  • title:標題欄文本
  • messageType:圖標類型 (ERROR/INFORMATION/WARNING/QUESTION/PLAIN_MESSAGE)
  • optionType:按鈕組合 (DEFAULT/YES_NO/YES_NO_CANCEL/OK_CANCEL)
  • icon:自定義圖標
  • options:自定義按鈕文本/組件數組 (OptionDialog 專用)
  • initialValue:默認選中項

實戰代碼示例

1. 消息對話框 — 帶錯誤圖標

JOptionPane.showMessageDialog(
    null, 
    "在對話框內顯示的描述性文字", 
    "標題欄文字", 
    JOptionPane.ERROR_MESSAGE
);

2. 確認對話框 — 是/否選擇

int result = JOptionPane.showConfirmDialog(
    null, 
    "choose one", 
    "choose one", 
    JOptionPane.YES_NO_OPTION
);
if (result == JOptionPane.YES_OPTION) { /* 用戶點是 */ }

3. 選項對話框 — 完全自定義按鈕

Object[] options = {"確定", "取消", "幫助"};
int response = JOptionPane.showOptionDialog(
    this,                                    // 父組件
    "這是個選項對話框,用戶可以選擇自己的按鈕個數", // 消息
    "選項對話框標題",                         // 標題
    JOptionPane.YES_OPTION,                  // optionType (此處影響默認鍵盤焦點)
    JOptionPane.QUESTION_MESSAGE,            // messageType
    null,                                    // 自定義圖標
    options,                                 // 按鈕文本數組
    options[0]                               // 默認選中
);

switch (response) {
    case 0: setTitle("您按下了第 OK 按鈕"); break;
    case 1: setTitle("您按下了第 Cancel 按鈕"); break;
    case 2: setTitle("您按下了第 Help 按鈕"); break;
    case -1: setTitle("用戶關閉窗口"); break; // 關閉按鈕返回 -1
}

4. 輸入對話框 — 純文本輸入

String input = JOptionPane.showInputDialog("Please input a value");
if (input != null) { /* 用戶點確定並輸入內容 */ }

5. 輸入對話框 — 下拉選擇

Object[] choices = {"First", "Second", "Third"};
Object selected = JOptionPane.showInputDialog(
    null, 
    "Choose one", 
    "Input", 
    JOptionPane.INFORMATION_MESSAGE, 
    null, 
    choices, 
    choices[0]
);
if (selected != null) {
    setTitle("您選擇了 " + selected + " 項目");
}

最佳實踐提示

  • 父組件傳 this (Frame/Panel) 可使對話框居中顯示於應用窗口
  • message 參數接受 Object,可傳入 JLabel、JPanel 等組件實現富文本/複合佈局
  • 長文本自動換行,超長內容建議放入 JScrollPane 包裹的 JTextArea
  • 國際化:所有文本應從 ResourceBundle 獲取
  • 異常處理:頭less 環境下調用會拋 HeadlessException

總結

JOptionPane 提供了開箱即用的標準對話框,覆蓋 90%+ 的用戶交互場景。掌握五大參數組合,可靈活構建從簡單提示到複雜選擇的各類交互,無需手寫 JDialog 繼承類,代碼更簡潔、外觀更統一、行為更標準。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved