JAVA布局情况

时间:2015-11-26 22:23:38

标签: java swing

所以我将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,如果它比它刚刚显示的要小。有任何想法吗 ?

1 个答案:

答案 0 :(得分:2)

您可以使用Darryl的Shrink Icon。这是Icon您可以添加到JLabel,然后将JLabel添加到JPanel

Shrink Icon的作用是:

  1. 如果没有足够的空间来显示图像,那么它将缩小图像
  2. 如果有足够的空间,则图像以可用空间为中心。
  3. 我们不会对组件的空间分配进行硬编码。我们让每个组件占用它所需的空间。因此,对于主布局,您将使用框架的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)
    

    现在,随着框架尺寸的变化,图像面板会增大/缩小,标签也会根据可用空间增大/缩小。