2013-05-01 4 views
2

MigLayout에서 양식을 작성하려고합니다. 모든 텍스트 필드 앞에 작은 JLabel 레이블을 지정하고 텍스트 필드를 사용할 수있는 공간으로 늘려야합니다. 나는 성공적으로 다음 코드에서이 작업을 수행 할 수 있어요 :MigLayout에서 JLabel이 커지지 않도록 방지

JFrame frame = new JFrame("Test"); 
JPanel panel = new JPanel(new MigLayout("", "fill", "")); 
panel.add(new JLabel("Testing")); 
panel.add(new JTextField(), "growx, pushx, wrap"); 
frame.setContentPane(panel); 
frame.pack(); 
frame.setMinimumSize(new Dimension(400, 100)); 
frame.setPreferredSize(new Dimension(400, 100)); 
frame.setVisible(true); 
결과는 예상대로 인이처럼 보인다

합니다 (JLabel의 최소 필요 크기의 JTextField는,이 지역의 나머지 부분을 차지) :

enter image description here

그러나, 나는이 아래의 JEditorPane를 넣고는 전체 창 길이에 걸쳐있는 경우, JLabel의 큰되고 난 창을 확대하면 커집니다. 내가 기대하지 않는 결과가 발생

... 
panel.add(new JTextField(), "growx, pushx, wrap"); 
//New line of code here: 
panel.add(new JEditorPane(), "growx, pushx, span"); 
frame.setContentPane(panel); 
... 

합니다 (JLabel의 성장했습니다) : 코드의 변화는 다음과 같습니다

enter image description here

내가 MigLayout 매개 변수를 추가하여이 문제를 해결하기 위해 노력했습니다 JLabel의 경우 "growx 0""shrink"과 같지만 레이블의 크기에는 영향을주지 않습니다.

이런 상황에서 JLabels가 커지지 않게하려면 어떻게해야합니까?

+0

당신이 "w 분"시도? –

+0

나는 가지고있다. 그러나 나는 크기를 하드 코드 할 필요가없는 대답을 선호한다. – Thunderforge

답변

4

나는 그것을 알아 냈다! 문제는 JEditorPane로의 매개 변수이다

panel.add(new JEditorPane(), "growx, pushx, span"); 

그것은 span를 사용하는 경우 (이미 크기가 증가하기 때문에)이 함께 사용될 때, growx, pushx이 불필요하다고 밝혀 그 위의 효과를 만들어 . 내 생각에 growxspan으로 표시된 모든 셀에 적용되지만 pushx은 첫 번째 셀에만 적용됩니다.

따라서 span은 구성 요소가 여러 셀을 차지하게하고 모두 growx 기본값을 할당하지만 pushx은 첫 번째 셀을 늘립니다.

그래서 선을 고정하는 적절한 방법은 간단하다 :

panel.add(new JEditorPane(), "span");