当前位置: 首页 > 知识库问答 >
问题:

如何在更改JLabel的大小时动态缩放图像

袁鹤轩
2023-03-14

我已经将一个图像读入一个JLabel,并将该图像缩放到JLabel的大小,如下所示:

File file = new File ("C:/Users/Me/Desktop/TestImages/test.jpg");
BufferedImage image = ImageIO.read(file);

Image scaledImage = image.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);
label.setIcon(new ImageIcon(scaledImage));

我使用提供的GroupLayout并将水平轴和垂直轴设置为“自动调整大小”(通过设计视图),这样每当我更改窗口大小时,JLabel的大小就会自动调整为JFrame的大小。

现在我想调整图像的大小和JLabel的大小,这里开始麻烦了。我添加了一个事件处理程序,它响应JFrame的大小调整,如下所示:

addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                addScaledImage(); // executes the lines above 
            }
        });

另外,如果我想保持我的图像的高宽比,是否有指定的缩放方法

共有1个答案

隆钊
2023-03-14

我想调整图像的大小和JLabel的大小

您可以使用伸展图标。当标签大小改变时,它将自动缩放。适用于任何可以显示图标的组件。

然后我用JScrollPane包围了JLabel

 类似资料:
  • 问题内容: 背景:-我需要使用Netbeans GUI Builder制作Swing GUI。 第一个子任务是在整个背景中显示图像。 我已经按照教程完成了。我基本上已经制作了一个JFrame,将其布局设置 为GridBagLayout,然后向其中添加了一个透明的(通过取消选中opaque 属性)JPanel。(问题1) 之后,我向JFrame添加了JLabel,删除了其文本并为其添加了图像 。(问

  • 我知道如何以正常的方式改变JLabel的字体大小 但是我想看看当您将JLabel添加到面板时是否有一种方法,即简单的方法。像这样.. 当JLabel没有名称时,我如何更改后者的字体大小? 我尝试在JPanel上设置字体,但它不起作用。 对此,我们将不胜感激。

  • 我使用传单允许在地图上绘制自定义SVG路径(多边形)。问题是,当用户缩小时,多边形变得太大,并模糊了地图的其余部分。 我在网上查找了一些例子,我遇到的资源使用了D3.geo库中的geo函数。而在我的用例中,我在地图上使用d3、传单和一个SVG层。 有没有一个公式,我可以适用于调整对象的大小正确?我知道我将不得不应用一个翻译功能,这将基于宽度,高度和当前缩放级别,但我想知道是否有一个标准的方法来做到

  • 我有一个小部件,我想缩放(像素完美)。根据设备的显示宽度,的大小应该增加或减少。我尝试了小部件来更改的大小。这工作得很好,但是小部件的大小永远不会改变。它总是与的原始大小相匹配(不缩放)。有没有办法强制总是采用其子级的大小?或者有替代方法吗? 您可以在此处找到显示当前和所需情况的图像 编辑:小部件及其子部件应均匀收缩/增长。它们之间的比率不应改变。 这是我目前尝试的代码

  • 问题内容: 我正在尝试动态缩放文本,以将其放置在尺寸不同但已知的图像上。文本将用作水印。有什么方法可以根据图像尺寸缩放文本?我并不需要文字占据整个表面区域,而只是要使其足够可见即可,以使其易于识别且难以删除。我正在使用Python Imaging Library版本1.1.7。在Linux上。 我希望能够设置文本大小与图像大小的比率,比如说1/10大小。 我一直在寻找字体大小属性来更改大小,但是我

  • 问题内容: 如何更改图像尺寸以适合打印? 例如,我想使用A4纸,其横向尺寸为11.7英寸乘8.27英寸。 问题答案: 您需要提前创建matplotlib Figure和Axes对象,并指定图形的大小: