자바 스윙을 사용하고 있습니다. 나는 그림 그리드를 추가하고 싶다.간격없이 아이콘을 설정하는 방법은 무엇입니까?
public class LayoutTest {
JFrame frame = new JFrame("GridLayout demo");
JPanel panel = new JPanel();
JButton btn1 = new JButton("First");
JButton btn2 = new JButton("Second");
JButton btn3 = new JButton("Third");
JButton btn4 = new JButton("Fourth");
JPanel panel2 = new JPanel();
JButton btn12 = new JButton("First2");
JButton btn22 = new JButton("Second2");
JButton btn32 = new JButton("Third2");
JButton btn42 = new JButton("Fourth2");
JPanel panel3 = new JPanel();
JButton btn13 = new JButton("First2");
JButton btn23 = new JButton("Second2");
JButton btn33 = new JButton("Third2");
JButton btn43 = new JButton("Fourth2");
JLabel label13 = new JLabel(new ImageIcon("pictures/building.jpg"), JLabel.CENTER);
JLabel label23 = new JLabel(new ImageIcon("pictures/building2.png"), JLabel.CENTER);
JLabel label33 = new JLabel(new ImageIcon("pictures/building.jpg"), JLabel.CENTER);
JLabel label43 = new JLabel(new ImageIcon("pictures/building2.png"), JLabel.CENTER);
public LayoutTest() {
panel3.setLayout(new GridLayout(2,2,0,0));
panel3.add(label13);
panel3.add(label23);
panel3.add(label33);
panel3.add(label43);
frame.add(panel3);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
// frame.setSize(40,40);
frame.setVisible(true);
}
}
결과 : . 나는 gridLayout을 사용하고있다. 내 사진 크기는 20x20 픽셀입니다. 이 수평 간격이없는 이미지를 추가하려면 어떻게해야합니까?
프레임 장식이 여분의 크기를 강요 것으로 보인다. 네 개의 아이콘이 한 행에 추가 된 경우 간격이 줄어들거나 사라집니다. 일반적인 팁 : 1) 더 나은 도움을 더 빨리 얻으려면 [MCVE] 또는 [Short, Self Contained, Correct Example] (http://www.sscce.org/)를 게시하십시오. 2) 예를 들어 이미지를 얻는 한 가지 방법은 [이 Q & A] (http://stackoverflow.com/q/19209650/418556)에서 볼 수있는 이미지에 핫 링크하는 것입니다. .. –
.. 3) 애플리케이션 리소스는 배포 시점까지 임베디드 리소스가 될 것이므로 지금 당장 액세스하는 것이 현명합니다. [tag : embedded-resource]는 파일이 아닌 URL로 액세스해야합니다. [info. URL을 구성하는 방법은 임베디드 리소스 페이지 (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. –
첫 번째 댓글을 확장하십시오. 프레임의 기본 레이아웃은'BorderLayout'입니다. 구성 요소가 제약 조건없이 테두리 레이아웃에 추가되면 'CENTER'로 끝납니다. 테두리 레이아웃의 가운데에 추가 된 구성 요소 ('panel3')는 사용 가능한 전체 너비와 높이를 채우기 위해 늘어납니다. 'GridLayout'은 가장 넓고 가장 높은 그리드 셀에 대해 필요한 너비와 높이를 할당합니다. 따라서 content pane의'LINE_START' 또는'LINE_END'에'panel3'을 추가함으로써이 동작을 피할 수 있습니다 -이 위치는 높이를 늘리 겠지만 너비를 존중합니다. –