2016-01-09 16 views
-1

我正在寫一些代碼來調出輸入對話框,然後通過對話框讀取創建一個txt文件進行保存。可悲的是我還沒有那麼遠。我通常知道輸入對話框是如何工作的,但問題是我希望當用戶按下ok時觸發它。如果他按下取消或退出,則關閉窗口。inputdialog按鈕如何工作。我以爲他們是一樣的confirmdialog

下面是代碼:

private void saveActionPerformed(java.awt.event.ActionEvent evt) {          
    if (JOptionPane.showInputDialog(rootPane, "Save as?", "Save as?", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) { 
//continue code 

} 

} 

這件事,我想混合字符串和INT neatbeans帶來了一個錯誤。問題是我不知道在哪裏。我還嘗試將整個Joptionpane保存在一個字符串中,但這帶來了更多問題。 如果有人可以告訴我如何觸發代碼,當確定按鈕被按下,這將是真棒。

我以爲它的工作方式與yes no option相同。代碼:

if (JOptionPane.showConfirmDialog(rootPane, "HAVE FUN!", "Tutorial", 
    JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) { 
    System.exit(0); 
    } 

但它看起來像我錯了。 謝謝你所有的答覆!

+0

剛剛閱讀javadoc。這就是它的用途:https://docs.oracle.com/javase/8/docs/api/javax/swing/JOptionPane.html#showInputDialog-java.awt.Component-java.lang.Object-java.lang.String - 詮釋-javax.swing.Icon-java.lang.Object中:A-java.lang.Object-。它說:*返回: 用戶的輸入,或null表示用戶取消輸入*。 –

回答

0

showInputDialog返回用戶輸入的字符串,如果按下取消或退出,則返回null。 showConfirmDialog返回一個選項,指示哪個按鈕被按下,但它顯示的消息是一個對象,意思是您可以給它一個面板來顯示。

public static void main(String[] args) { 


    JPanel panel = new JPanel(new GridLayout(2, 1)); 
    panel.add(new JLabel("Input bla bla")); 
    JTextField textField = new JTextField(); 
    panel.add(textField); 

    if (JOptionPane.showConfirmDialog(null, panel, "Tutorial", 
     JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { 
     JOptionPane.showMessageDialog(null, textField.getText()); 
    } 
    else{ 
     System.exit(0); 
    } 

} 
+0

那麼,爲了得到寫入的文本,我需要調用什麼? – Facemelt

+0

textField.getText() 而textField是您在顯示面板中使用的字段。 試試我寫給你的例子。 –

相關問題