JOptionPane如何自定義按鈕綁定事件


JOptionPane如何自定義按鈕綁定事件

2018年01月29日 19:27:10
閱讀數:475

摘自:https://blog.csdn.net/m0_37355951/article/details/79198713

JOptionPane是java方便快捷彈出窗口。雖然沒有JDialog那么靈活,但是確實實用。切入正題如何在JOptionPane自定義按鈕,這里用到如下方法。


     
     
     
             
  1. public static int showOptionDialog(Component parentComponent,
  2. Object message,
  3. String title,
  4. int optionType,
  5. int messageType,
  6. Icon icon,
  7. Object[] options,
  8. Object initialValue)
  9. throws HeadlessException調出一個帶有指定圖標的對話框,其中的初始選擇由 initialValue 參數確定,選項數由 optionType 參數確定。
  10. 如果 optionType 為 YES_NO_OPTION 或者 YES_NO_CANCEL_OPTION,並且 options 參數為 null,則由外觀提供選項。
  11. messageType 參數主要用於提供來自外觀的默認圖標。
  12. 參數:
  13. parentComponent - 確定在其中顯示對話框的 Frame;如果為 null 或者 parentComponent 不具有 Frame,則使用默認的 Frame
  14. message - 要顯示的 Object
  15. title - 對話框的標題字符串
  16. optionType - 指定可用於對話框的選項的整數:DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION 或 OK_CANCEL_OPTION
  17. messageType - 指定消息種類的整數,主要用於確定來自可插入外觀的圖標:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE
  18. icon - 在對話框中顯示的圖標
  19. options - 指示用戶可能選擇的對象組成的數組;如果對象是組件,則可以正確呈現;非 String 對象使用其 toString 方法呈現;如果此參數為 null,則由外觀確定選項
  20. initialValue - 表示對話框的默認選擇的對象;只有在使用 options 時才有意義;可以為 null
這里網上找到的例子


     
     
     
             
  1. import javax.swing.JOptionPane;
  2. public class Main {
  3. public static void main(String[] argv) throws Exception {
  4. String[] buttons = { "Yes", "Yes to all", "No", "Cancel" };
  5. int rc = JOptionPane.showOptionDialog(null, "Question ?", "Confirmation",
  6. JOptionPane.WARNING_MESSAGE, 0, null, buttons, buttons[2]);
  7. System.out.println(rc);
  8. }
  9. }


引用: http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizeJOptionPanebuttons.htm
總結:

1、字符串數組是可以顯示成按鈕,那么問題,我怎么獲取這個按鈕對象呢?大膽嘗試一下向里面直接傳入button對象是否可以?

直接傳入JButton對象


     
     
     
             
  1. public static void main(String[] args) {
  2. JButton jbutton = new JButton( "Yes");
  3. JButton jbuttons = new JButton( "no");
  4. JButton[] buttons = { jbutton,jbuttons};
  5. jbutton.addActionListener(new ActionListener() {
  6. @Override
  7. public void actionPerformed(ActionEvent paramActionEvent) {
  8. System.out.println("您點擊了YES。。。。。");
  9. }
  10. });
  11. jbutton.setEnabled(false);
  12. int rc = JOptionPane.showOptionDialog(new JLabel("12322322"), "Question ?", "Confirmation",
  13. JOptionPane.INFORMATION_MESSAGE, 0, null, buttons, buttons[0]);
  14. System.out.println(rc);
  15. }
注意:jbutton事件綁定必須在JOptionPane.showOptionDialog(...)之前,因為這個對話框會阻塞,這個方法以下不會立即執行
繼續修改問題:發現對話框關不掉了。是不是很尷尬?


     
     
     
             
  1. Window win = SwingUtilities.getWindowAncestor(jbutton); //找到該組件所在窗口
  2. win.dispose(); //關閉

整個代碼如下:


     
     
     
             
  1. public static void main(String[] args) {
  2. final JButton jbutton = new JButton( "Yes");
  3. JButton jbuttons = new JButton( "no");
  4. JButton[] buttons = { jbutton,jbuttons};
  5. jbutton.addActionListener(new ActionListener() {
  6. @Override
  7. public void actionPerformed(ActionEvent paramActionEvent) {
  8. System.out.println("您點擊了YES。。。。。");
  9. //這里就是關閉窗口
  10. Window win = SwingUtilities.getWindowAncestor(jbutton);
  11. win.dispose();
  12. }
  13. });
  14. int rc = JOptionPane.showOptionDialog(new JLabel("12322322"), "Question ?", "Confirmation",
  15. JOptionPane.INFORMATION_MESSAGE, 0, null, buttons, buttons[0]);
  16. System.out.println(rc);
  17. }

參考網址:

1、http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizeJOptionPanebuttons.htm

2、https://stackoverflow.com/questions/29357055/close-window-jpanel-in-java


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM