2017-09-27 1 views
0

나는 취소 또는 X를 누르지 않는 한 사용자가 올바른 파일 이름을 입력하도록 트랩하려고합니다. 입력을 취소하면 내 프로그램에서 NullPointerException을 발생시킵니다. . 사용자가 취소 버튼을 칠 때Java-Swing : 사용자가 올바른 파일 이름을 입력하지 못하도록 함

public void openSaveAsDirectory() { 

    JDialog dialog = new JDialog(); 
    dialog.setTitle("Save file as"); 
    String name = JOptionPane.showInputDialog(adTable, "Please type a name for your file"); 
    if(name != null && !name.isEmpty()) { 

     File fileName = new File(SAVE_LOCATION + FILE_SEPERATOR + name + FILE_SUFFIX); 
     book.saveUser(fileName); 

    } 

    while(name.isEmpty()) { 
      name = JOptionPane.showInputDialog(adTable, "Please type a name for your file"); 
    } 
} 
+1

글쎄, 입력 대화 상자를 취소하면 'name'은 null이됩니다. 당신은'while (name.isEmpty()) {'를 수행합니다. 'name'은 null 일 수 있습니다. – nbokmans

+2

[NullPointerException이란 무엇이며 어떻게 수정합니까?] (https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it)) – nbokmans

+2

그냥 궁금 해서요. 왜 JOptionPane 대 JFileChooser를 사용하고 있습니까? – ControlAltDel

답변

0

는 귀하의 의견을 바탕으로, 여기, 비어 있지만 중지만큼 입력을 요청 업데이트 된 버전입니다.

String name; 
do { 
    name = JOptionPane.showInputDialog(null, "Please type a name for your file"); 
    if(name == null) { //user hit cancel, break the loop 
     break; 
    } 
} while(name.isEmpty()); 
+0

이것은 사용자를 영원히 간직하지 않겠습니까? 왜냐하면 while name == null은 사용자가 Cancel을 누르거나 X를 잘못 입력 한 경우에만 발생합니다. 하지만 사용자가 입력을 취소 할 수 있기를 바랍니다. – lucas6198

+0

정확함, 영원히 계속 묻습니다. 당신은 사용자가 그것을 취소 할 때 (심지어 완벽 함에도 불구하고) 멈추기를 원했다고 결코 말하지 않았습니다. –

+0

@ lucas6198 필요에 따라 답변을 업데이트했습니다. –

관련 문제