2015-12-28 90 views
0

如何將ActionListener添加到JOptionPane中的JButton。所以當我按下按鈕時,它會執行某個代碼。 我試圖用這個代碼,但它不工作:將actionlistener添加到joptionPane中的按鈕(java)

JButton button1= new JButton("Button 1"); 
int value = JOptionPane.showOptionDialog(null, "Here's a test message", "Test", JOptionPane.YES_OPTION , JOptionPane.QUESTION_MESSAGE, null,new Object[]{button1}, button1); 
button1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     //code to excute 
     System.out.println("code excuted"); 
    } 
}); 
+0

你的意思是[this](http://stackoverflow.com/questions/12828389/actionlistener-on-joptionpane/12829264#12829264)?問題是,爲什麼? 'JOptionPane'將返回被激活的對象的'int'索引 – MadProgrammer

+1

或類似[this](http://stackoverflow.com/questions/14591089/joptionpane-passing-custom-buttons/14591165#14591165)? – MadProgrammer

回答

3

我如何添加的ActionListener在JOptionPane中的按鈕。

那麼,您需要將ActionListener添加到按鈕之前顯示選項窗格。

但是,您並不是真的想要提供自己的自定義按鈕,因爲即使添加了ActionListener,您仍然需要自行管理對話框的關閉。

相反,更好的解決方案是隻提供自定義字符串並讓JOptionPane管理按鈕並關閉對話框。

然後你測試返回值,你基於該值處理:

if (value == 0) // the string text you specify for the button 
    // do something 

閱讀How to Make Dialogs Swing的教程使用選項窗格的更多信息。

+1

或者,如果您提供自定義選項,則選項數組中的選項的索引;) – MadProgrammer