2012-01-08 3 views
2

Box (BoxLayout이 있음)에 [OK] 및 [Cancel] 버튼을 가로로 배치했습니다. 나중에이 상자를 JDialog의 내용 창에서 BorderLayout.PAGE_END에 추가합니다. 이것은 Windows에서 완벽하게 작동하므로 [확인]은 내가 추가 한 것처럼 [취소] 왼쪽에 있습니다.OS에 따라 BoxLayout의 버튼을 수평으로 배치

Linux에서 테스트 할 때 버튼 배치는 Windows와 동일하지만 [취소] 왼쪽의 [확인]을 누르십시오. 이것은 다시 코드에서 따릅니다.

그러나 Linux (Ubuntu)의 경우 버튼의 기본 배치는 [확인] 왼쪽에 [취소]입니다. 이것은 내 코드 및 버튼 배치와 대조됩니다.

내 질문은 : Java가 일정한 종류의 상수를 가지고 있는지 여부 - OS_PLACEMENT가 어딘가에 설정되어 Linux에서 [취소] 버튼이 [확인] 왼쪽에 표시되게 할 수 있습니까? 나는 자바가 RTL과 LTR 레이아웃을위한 상수를 지원한다는 것을 알고 있기 때문에 이것을 묻는다. 따라서, 나는 이런 종류의 배치와 관련하여 몇 가지 상수가있을 것이라고 생각했다.

은 내가이 시스템 L 내 스윙 응용 프로그램의 L에게 & F를 설정하는 것을 언급 할 & F.) (주

UIManager.setLookAndFeel에 나의 첫번째 라인에 따라 (UIManager.getSystemLookAndFeelClassName은());

답변

2

Linux (Ubuntu)에서 Gnome을 말한다면, 맞습니까? Gnome (Gtk)의 기본적으로 (OS) 버튼 배치는 취소 버튼을 왼쪽에 배치합니다.

당신은 스윙의 모양과 느낌 변경하려고 할 수 있습니다 : How to Set the Look and Feel

+0

네, 우분투 리눅스와 그놈을 의미한다. 당신이 올바른지. 스윙 앱에서 L & F를 이미 변경했습니다. 다음은 main() 내 첫 줄입니다. UIManager.setLookAndFeel ( UIManager.getSystemLookAndFeelClassName()); 동작이 아직 있습니다. 도울 수 있니? – txx28

1

아니, 자바 당신을 위해 자동으로이 작업을 수행 할 것이다.

무료 "JGoodies Form"라이브러리 사용을 고려하십시오. 그것은 사용자의 OS에 따라 정확한 순서로 버튼을 배치 할 "ButtonBarBuilder"라는 클래스를 가지고 있습니다.

그렇지 않으면 System.getProperty ("os.name")의 값을 수동으로 검사하여 값에 따라 단추를 배치해야합니다.

+0

감사합니다. 나는 System.getProperty ("os.name")를 사용할 것이고, JDialog의 디자인이 완료되면 OS마다 버튼을 배치 할 것이다. 그럼에도 JGoodies를 살펴 보겠습니다. – txx28

0

일부 레이아웃 관리자는 자동으로이 작업을 수행합니다 (예 : DesignGridLayout). MigLayout은 응용 프로그램이 실행중인 OS를 감지하고이를 기반으로 OK 및 취소 (및 기타 특정 버튼)에 대한 올바른 위치를 선택합니다.

예를 들어, DesignGridLayout 당신은 할 것 :

DesignGridLayout layout = new DesignGridLayout(myDialog); 
layout.row().bar().add(okButton, Tag.OK).add(cancelButton, Tag.CANCEL); 
관련 문제