2011-10-04 3 views
0

JPanel을 사용하여 이미지 (이 경우 1024x1025)를 표시하는 JFrame이 있습니다. 내가 대답을 찾지 못하는 문제는 포함 된 JFrame이 JPanel 전체 이미지를 표시하는지 확인하는 것입니다. 나는이 예제에 가까운 무언가가 :JPanel을 포함하도록 JFrame 가져 오기

ImagePanel view = new ImagePanel(); //extends JPanel 
JFrame Container = new JFrame(); 
view.setSize(1024, 1025); 
container = new JFrame(winTitle); 
container.setLayout(new BorderLayout()); 
container.setSize(view.getSize()); 
container.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
container.add(view); 
container.setVisible(true); 

이 분명의 문제점은 JFrame의 기본이되는 OS로 장식된다, 그래서 나는 JPanel의 크기보다는 그것을 더 크게 만들 수있는 얼마나 많은 픽셀 아무 생각이 없다 시스템에서 시스템으로. 이제 JPanel과 같은 크기로 JFrame을 설정하기 때문에 소수의 픽셀만으로 이미지가 오른쪽과 아래에서 잘립니다. JFrame이 포함하고있는 Jpanel의 크기를 읽고 전체 JPanel을 표시 할만큼 충분히 크게 만들도록 JFrame에 지시하는 방법이 있습니까? 감사!

편집

후 추가가 나에게 내가 원하는 한 동작을 제공 한 후 다음 포장, 컨테이너에 크기 (권장하지 않음)를 설정, 이미지 패널에 원하는 크기를 설정. 아무도 여기에 무슨 일이 일어 났는지 설명 할 수 있습니까, 나는 여전히 약간의 스윙 구성 요소에 의한 작업 순서에 약간 퍼지기 쉽습니다.

+0

* "이미지를 표시하려면 JPanel into"* 이미지 위에 다른 것을 추가하고 있습니까? 그렇지 않다면'JLabel'에 ('ImageIcon'을) 넣으십시오. –

답변

0

container.add() 이후와 container.setVisible() 앞에는 container.pack()을 추가하십시오.

편집 : 당신은 또한 당신의 BorderLayout의 측면 중 하나에 Box.createVerticalStrut(int)Box.createHorizontalStrut(int)를 사용할 수 있습니다. 그렇게하면 레이아웃이 이미지의 여지를 남겨 두게됩니다.

+0

그러면 모든 창은 작아지고 이미지를 채우면 크기가 조정되지 않습니다. –

+0

그런 다음 이미지를 채운 후에 다시'pack()'을 호출하십시오. – CajunLuke

+0

이미지가 채워지기 전에 창 크기 (JFrame)가 필요합니다. –

0

이미지 패널을 JFrame의 contentPane에 추가해야합니다. 그리고 프레임에 pack()을 사용하여 적절한 크기가되도록해야합니다. 구성 요소의 기본 크기를 수용하는 데 필요한 크기가 필요합니다.

+0

그것은 창문을 작게 만듭니다. 이 시점에서 JPanel에는 캔바스에 그려진 이미지가 없습니다. –

+0

팩은 구성 요소의 기본 크기 및 레이아웃을 기반으로 프레임 크기를 계산하므로 둘러싸인 JPanel의 기본 크기를 설정해야합니다. –

+0

그래, 실제 문제는 내 Eclipse일지도 모른다. 하지만이 작품, 내 이미지 패널의 기본 크기를 설정 한 다음 컨테이너에 setSize() 다음 pac() k 작동합니다. 두 가지 모두에서 기본 설정을 지정하면 프레임이 작아집니다. –

0

이미지 해상도가 확실한 경우 JFrame 및 JPanel에 setPreferredSize(new Dimension(1024, 1025))을 사용하십시오. JFrame은 기본적으로 BorderLayout을 사용하므로 container.setLayout(new BorderLayout());을 지정할 필요가 없습니다.

+0

불행히도이 작업을 수행하면 JFrame이 약간의 이유로 작아집니다. 나는 그것이 팩()과 관련이 있다고 생각한다; –

+0

@Alan'setMinimumSize (새로운 차원 (1024, 1025))'시도해보십시오. 이것은 작동해야합니다 .. – PraveenMax

관련 문제