2014-09-26 4 views
1

두 개의 JList 컨트롤이 나란히 있습니다. 그리고 그들 사이에 몇 개의 버튼이 있습니다. 이클립스에서 실행하면 레이아웃이 잘 보입니다. 내가 보낸 jar 파일을 실행하면jar 파일을 실행하는 동안 JList 컨트롤 크기가 변경됩니다.

enter image description here

는하지만, 왼쪽은 더 많은 공간을 차지합니다. 왜 이렇게하는지 모르겠습니다.

enter image description here

이 같은 GridBagLayout로에 배치합니다.

mLstMdlTestSuitesAvailable = new DefaultListModel<String>(); 
mLstTestSuitesAvailable = new JList<String>(); 
mLstTestSuitesAvailable.setModel(mLstMdlTestSuitesAvailable); 
mLstTestSuitesAvailable.setMinimumSize(new Dimension(100, 100)); 
JScrollPane scrollPaneTestSuitesAvailable = new JScrollPane(mLstTestSuitesAvailable); 
GridBagConstraints gbcLstTestSuitesAvailable = new GridBagConstraints(); 
gbcLstTestSuitesAvailable.fill = GridBagConstraints.BOTH; 
gbcLstTestSuitesAvailable.weightx = 10; 
gbcLstTestSuitesAvailable.gridwidth = 10; 
gbcLstTestSuitesAvailable.weighty = 8; 
gbcLstTestSuitesAvailable.gridheight = 8; 
gbcLstTestSuitesAvailable.insets = new Insets(0, 11, 10, 11); 
gbcLstTestSuitesAvailable.gridx = 0; 
gbcLstTestSuitesAvailable.gridy = 1; 
panel.add(scrollPaneTestSuitesAvailable, gbcLstTestSuitesAvailable); 

mLstMdlTestSuitesSelected = new DefaultListModel<String>(); 
mLstTestSuitesSelected = new JList<String>(); 
mLstTestSuitesSelected.setModel(mLstMdlTestSuitesSelected); 
GridBagConstraints gbcLstTestSuitesSelected = new GridBagConstraints(); 
gbcLstTestSuitesSelected.fill = GridBagConstraints.BOTH; 
gbcLstTestSuitesSelected.weightx = 10; 
gbcLstTestSuitesSelected.gridwidth = 10; 
gbcLstTestSuitesSelected.weighty = 8; 
gbcLstTestSuitesSelected.gridheight = 8; 
gbcLstTestSuitesSelected.insets = new Insets(0, 11, 10, 11); 
gbcLstTestSuitesSelected.gridx = 15; 
gbcLstTestSuitesSelected.gridy = 1; 
JScrollPane scrollPaneTestSuitesSelected = new JScrollPane(mLstTestSuitesSelected); 
panel.add(scrollPaneTestSuitesSelected, gbcLstTestSuitesSelected); 

아무도 나에게 무슨 문제가 있는지 알 수 있습니까?

+0

처음에는 JAR을 실행하기 위해 시스템과 함께 구성된 JRE가 이클립스가 사용하는 것과 다르다는 것입니다. – ControlAltDel

+0

둘 다 1.7.0_45를 사용합니다. –

+0

자신에게 풍미를 발휘하고 알맞은 LayoutManager를 사용하십시오. MiGLayout – keuleJ

답변

1

JTable의 경우 here으로 표시된 것처럼 목록의 getPreferredScrollableViewportSize() 메서드를 재정 의하여 처음의 기본 크기를 지정할 수 있습니다. getRowHeight()의 배수는 멋진 모습을 제공합니다.

image

+0

어떻게 달성했는지 샘플 코드를 알려주시겠습니까? –

+0

@ KarthikAndhamil : 접근법은 [여기] (http://stackoverflow.com/a/7881957/230513) 및 [here] (http://stackoverflow.com/a/7225323/230513)에서도 볼 수 있습니다. – trashgod

1

GridBagLayout 점 함유 된 성분의 바람직한 크기. JList의 선호되는 크기는 그 내용에 의해 결정됩니다. 스크린 샷을 보면 JList의 환경에 따라 내용이 다르므로 원하는 크기가 다른 것은 놀라운 일이 아닙니다.

더 예측 가능한 동작을 원한다면 setPrototypeCellValue을보십시오. 이렇게하면 셀 크기를 결정하는 "일반 값"을 설정할 수 있습니다. setFixedCellWidth 이상의 장점은 글꼴, 디스플레이 해상도 등을 여전히 고려한다는 점입니다.

+0

제 잘못입니다. 사실 둘 다 같은 값으로 시작됩니다. 그러나 사용자는 값을 변경할 수있는 옵션이 있습니다. 그래서 나는 다른 가치의 스크린 샷을 찍었습니다. 그러나, 그들이 동일하더라도, 크기는 다릅니다. 지금 편집 된 질문을 볼 수 있습니다. –

+0

재미있는 점은 사진의 높이가 다르다는 것입니다. 그래서 당신은 키를 강요하는 것처럼 보입니다. 'JFrame' 크기를 통해. 그럼 내 생각 엔'GridBagLayout'이 선호 크기와 최소 크기 전략 사이를 전환한다는 것입니다. 프레임의 크기를 약간 변경하고 어떻게되는지보십시오. – Holger

0

이유를 알아 냈습니다. 맨 위의 배너 이미지는 내보내지지 않으므로 병 레이아웃으로 엉망이되었습니다. jar 파일을 내보낼 폴더에 이미지를 추가하면 이클립스에서 실행 된 이미지와 정확히 동일하게 표시됩니다. 다들 감사 해요.