所以我将JFrame设置为fullsize
temp.setExtendedState(JFrame.MAXIMIZED_BOTH);
我在panel1中添加了3个面板(borderlayout),我使用JLabel来显示图像:
img.getScaledInstance(600, 400,
Image.SCALE_SMOOTH);
与Panel2相同,panel3只是一些按钮。
(我不会在这里发布整个代码),但这段代码运行得很好。
现在我想做的是:
Jframe是全尺寸的,面板1占45%,面板2占45%,面板占10%3。
如果我对dsiplay的图片太大而不适合45%,它会缩放以适应这个45%的JFrame,如果它比它刚刚显示的要小。有任何想法吗 ?
答案 0 :(得分:2)
您可以使用Darryl的Shrink Icon。这是Icon
您可以添加到JLabel
,然后将JLabel
添加到JPanel
。
Shrink Icon
的作用是:
我们不会对组件的空间分配进行硬编码。我们让每个组件占用它所需的空间。因此,对于主布局,您将使用框架的BorderLayout。
你会用:
JPanel controls = new JPanel();
controls.add(...);
frame.add(controls, BorderLayout.PAGE_END);
然后,您将为图像创建第二个面板:
JPanel images = new JPanel( new GridLayout(0, 1) );
images.add( new JLabel(...) );
images.add( new JLabel(...) );
frame.add(images, BorderLayout.CENTER)
现在,随着框架尺寸的变化,图像面板会增大/缩小,标签也会根据可用空间增大/缩小。