JAVA布局情况

标签 java swing

所以我将 JFrame 设置为全尺寸

temp.setExtendedState(JFrame.MAXIMIZED_BOTH); 

我添加了 3 个面板(边框布局),在 panel1 中我使用 JLabel 来显示图像:

img.getScaledInstance(600, 400,
        Image.SCALE_SMOOTH);

panel2一样,panel3只是一些按钮。 (我不会在这里发布整个代码),但是这段代码运行得很好。 现在我想做的是: Jframe是全尺寸的,45%被panel1占据,45%被panel2占据,10%被panel3占据。 如果我的图片到 dsiplay 太大而无法容纳 45%,则它会缩放以适合 JFrame 的 45%(如果它比刚刚显示的小)。有任何想法吗 ?

最佳答案

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

收缩图标的工作原理是:

  1. 如果没有足够的空间来显示图像,则会缩小图像
  2. 如果有足够的空间,则图像将在可用空间中居中。

我们不会对组件的空间分配进行硬编码。我们让每个组件占据它所需的空间。因此,对于您的主要布局,您将使用框架的 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)

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

关于JAVA布局情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947805/

相关文章:

java - DefaultHttpClient 单例实例的超时

尝试将文本文件传递到 POST 并将内容转换为 List<Integer> 时出现 Java FileNotFoundException

java - JTable 单元格值

java - 如何更新 actionListener 内的 JTextArea 文本?

java - 为不同惯性系中的表创建不同的数据模型

java - 从特定类扩展,同时实现共享方法

java - xhtml 文件未通过注释与 bean 绑定(bind)

java - friend 无法使用我为他创建的应用程序,有没有办法提供使用 exe 运行我的应用程序所需的 java 文件?

java - 使用命令行界面应用程序作为库

java - 使用 Appium 向下滚动时出现 "An unknown server-side error occurred while processing the command"