2012-03-04 6 views
5

저는 Java에 익숙하지 않고 일부 레이블, 버튼 및 텍스트 필드로 GUI 응용 프로그램을 만들려고합니다. 이 프로그램은 매우 간단하며 방금 FlowLayout 인 기본 레이아웃을 사용하려고했습니다. 나는 그럭저럭 모든 것을 잘 살 수 있었고 크기를 정할 수 있었다. 그러나 유일하게 일하는 것처럼 보이지 않는 것은 정렬이다. 버튼과 텍스트 필드를 특정 정렬로 배치하고 싶습니다. 그러나 정렬을 설정할 때마다 객체 자체가 아닌 객체가 무엇이든간에 텍스트를 이동시킵니다.Java Swing FlowLayout Alignments

button.setHorizontalAlignment(JButton.RIGHT); 

을하지만 버튼 대신 버튼 자체 내부의 텍스트를 정렬처럼 보인다 예를 들어, 내가 썼다. 내부 텍스트 대신 단추 자체를 정렬 할 수있는 방법이 있습니까?

다른 정렬 유형 (예 : BoxLayout)에서는 정렬 작업을 더 쉽게 처리 할 수 ​​있지만, FlowLayout을 사용하여 정렬 할 수 없다면이 예제에서는 FlowLayout을 사용하고 싶습니다. 그렇게 생각하지 마십시오.)

미리 감사드립니다. AbstractButton

+2

+1 좋은 질문, 스윙에 대한 [SSCCE] 더 나은 질문을 게시입니다 (http://sscce.org/) 나는이 일을 생각하지 않는다 – mKorbel

답변

13

생성자 FlowLayout(int align)을 참조하십시오.

지정된 배향 디폴트의 5 단위의 수평 및 수직 간격으로 새로운 FlowLayout를 구축. alignment 인수의 값은 FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER, FlowLayout.LEADING 또는 FlowLayout.TRAILING 중 하나 여야합니다.

this answer에서 볼 (콤보 및 상단에있는 상자를 선택) 당신이 FlowLayout.RIGHT 후 것 같다.

+0

네, 그렇습니다. 분명히 더 나은 정렬을 위해 다른 유형의 레이아웃을 사용해야하지만 꽤 잘됩니다. 감사. – Dennis

+1

그런 다음 위와 같이 중첩 된 레이아웃으로 이동합니다. 흐름 레이아웃 외의 유일한 정렬은 'GridBagLayout'에서 이미지의 중앙 정렬입니다. 후자는 생성자에서 달성되지 않고, 이미지를 추가 할 때 레이아웃 제약 조건을 사용하여 (또는 하나를 사용하지 않음) 사용합니다. –

+0

@AndrewThompson :이 'JPanel plafComponents = new JPanel (새 FlowLayout (FlowLayout.RIGHT, 3,3));'을 쓸 때, 기호 나 VARIABLE 등을 찾지 못한다는 오류가 발생합니다. JDK에 문제가 있습니까? 하지만 정상적인 FlowLayout 생성자를 사용할 수 있습니다. 당신이 조언을 할 수 있길 바래서 제 마지막에 뭐가 잘못 됐나요? 또는 이것에 대한 새 스레드를 시작해야합니까? –

2

setHorizontalAlignment아이콘 및 텍스트하지 버튼의 위치의 수평 배향을 설정한다. AbstractButton의 디폴트는 SwingConstants.CENTER입니다.

당신은 패널에 추가하거나이 같은 frame..something 동안

p.add(button, BorderLayout.SOUTH);//using `BorderLayout` 

흐름 레이아웃은 일반적으로에 버튼을 배치하기 위해서 사용됩니다 .... button..set에게 위치를 정렬하려면 패널. 버튼이 더 이상 같은 선에 들어 가지 않을 때까지 왼쪽에서 오른쪽으로 버튼을 배열합니다.

+0

.. 나는 그것을 시도했지만 아무것도 변경되지 않습니다. 두 번째 매개 변수는 위치에 대한 것이지만 어떤 이유로 든 변경되지는 않습니다. – Dennis

2

혼자서도 FlowLayout을 사용하여이 작업을 수행 할 수 있다고 생각하지 않습니다.

나의 제안은 다음과 같습니다

  • 는 훨씬 더 강력한 레이아웃 메카니즘 인 MigLayout로 전환하는 것이 좋습니다. MigLayout을 사용하면 기본적으로 유연한 그리드 내에서 구성 요소를 배치 할 수 있으며 각 그리드 셀 내에서 구성 요소의 특정 정렬을 설정할 수 있습니다.
  • 하위 구성 요소의 정렬을 원하면 중첩 된 JPanel 내부에 배치하는 것이 좋습니다. 그런 다음이 JPanel에 별도의 레이아웃을 사용할 수 있습니다 (아마도 BorderLayout?). 그러면 원하는 정확한 정렬을 얻을 수 있습니다.