OS X Mountain Lion에서 Java 응용 프로그램을 개발하고 실행하고 있으며 사용자 정의 대화 상자에 "예"및 "아니오"옵션을 추가했습니다. 그러나 Windows 7에서 응용 프로그램을 실행하면 "예"및 "아니오"옵션이 취소되었음을 알았습니다. 이 UI 결함을 수정하려면 다음 코드를 추가하십시오.JOptionPane에서 옵션이 반대로 된 이유는 무엇입니까?
String msg = "Are you sure you want to cancel the selected bookings?";
String[] options = new String[] { "Yes", "No" };
int noOption = 1;
String os = System.getProperty("os.name").toLowerCase();
if ("mac os x".equals(os)) {
options = new String[] { "No", "Yes" };
noOption = 0;
}
int option =
JOptionPane.showOptionDialog(null, msg, "Confirm Unbooking",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options,
options[noOption]);
if (option == noOption) {
return;
}
내가 처음에 설명한 문제가 왜 발생했는지 누군가가 알 수 있습니까? 응용 프로그램의 L & F와 관련이 있다는 느낌이 들었습니다. 감사!
시퀀스를 사용하지 마십시오. LAF가 플랫폼 ux 가이드 라인을 준수하는 작업을 수행하게되어 기쁩니다 :-) – kleopatra
감사합니다! 'JOptionPane'을 사용할 때만 프레임을 만들고 내 단추를 넣을 때이 동작을 보지 못했습니다. 다른 플랫폼에서 응용 프로그램을 테스트하는 것은 이번이 처음이므로이 문제가 발생하는 것을보고 놀랐습니다. –
사용자 정의 프레임/대화 상자의 버튼을 플랫폼 호환으로 만드는 것을 고려해 볼 수 있습니다 :-) OptionPaneUI의 내부가 충분히 재사용 할 수 있는지 (아마도 없을지라도) 기억하지만, 오버 (fi MigLayout, FormLayout) – kleopatra