2012-10-10 2 views
0

나는 편집 버튼을 눌렀을 때 창을 "편집 모드"로 전환하여 원하는대로 필드를 변경할 수 있으며 저장 버튼을 누르면 해당 항목을 저장할 수 있습니다 끝난. 편집 모드에서 다른 버튼을 눌러 원하는 방식으로 대화 상자를 열어 저장할지 묻습니다 (예/아니오).저장 대화 상자를 표시하는 더 쉬운 방법

지금은 "편집"모드 인 경우 저장하라는 메시지가 표시되고 사용자가 예를 누르면 파일을 저장하고, 다른 것이 눌려지면 버튼이 있어야 할 작업을 수행합니다. 해야 할 것.

이것은 현재 가지고있는 것입니다. 단추의 동작을 두 번 반복하는 대신에 이렇게하는 쉬운 방법이 있는지 알고 싶습니다.

if (editing) { 
     save = JOptionPane.showConfirmDialog(this, "Would you like to save?", "Save", 
      JOptionPane.YES_NO_OPTION); 

     if (save == 0) { 
      saveFile(); 
     } else { 
      //Button actions here... 
     } 
} else { 
    //Button actions here... 
} 

답변

1

그것은 올바른 방법입니다,하지만 당신은 오히려 JOptionPane 상수 showConfirmDialog()의 결과를 비교해야한다 :

if (save == JOptionPane.YES_OPTION) { 
    // ... 
} 

가 다른 사람에 의해 더 잘 읽을 수 있어요뿐만 아니라하지만 상수가 변경되는 경우에도 코드가 여전히 작동합니다 언젠가 (그러나 그것은 매우 희박합니다).

+0

내가 처음에 그렇게 할 거라고,하지만 난로 초기화하는 것을 몰랐어요 . 지금은 int로 저장합니다. – Caveman42

+0

'JOptionPane.YES_OPTION'와 같이 액세스 할 때 상수를 초기화하지 않아도됩니다. 그것의'public static final int' –

1

이 같은 다른 방법으로 버튼의 동작을 넣을 수 :

private void buttonActions() { 
    // Button actions here... 
} 

및 다음

if (editing) { 
    save = JOptionPane.showConfirmDialog(this, "Would you like to save?", "Save", 
     JOptionPane.YES_NO_OPTION); 

    if (save == JOptionPane.YES_OPTION) { 
     saveFile(); 
    } else { 
     buttonActions(); 
    } 
} else { 
    buttonActions(); 
} 
관련 문제