- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将图像读入 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并将水平轴和垂直轴设置为“自动调整大小”(通过设计 View ),以便 JLabel 的大小自动调整为每当我更改窗口大小时使用 JFrame。
现在我想调整图像的大小以及 JLabel 的大小,但这里开始出现麻烦。我添加了一个事件处理程序,用于响应调整 JFrame 的大小,如下所示:
addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
addScaledImage(); // executes the lines above
}
});
这在理论上可行,但速度非常慢。因此,我尝试将事件处理程序添加到 JLabel 而不是 JFrame,但这导致了另一个问题:图像不断扩展而不执行任何操作。然后,我用 JScrollPane 包围 JLabel,并将事件处理程序添加到 JScrollPane。只要我扩展 JFrame 的大小,这就有效。但是,当我缩小窗口大小时,图像的大小并没有缩小,而是保持不变。
是否有更优雅的方式来集成事件处理程序(可能不需要 JScrollPane 的帮助)?
如何使我的图像/JLabel 自动调整大小以及任何调整大小事件(增加和减少 JFrame 的大小)?另一种方法(例如另一个 LayoutManager)可能更适合这个?
另外,如果我想保持图像的高宽比,是否有指定的缩放方法?
最佳答案
I'd like to adjust the size of the image together with the size of the JLabel
您可以使用Stretch Icon 。当标签尺寸改变时,它会自动缩放。适用于任何可以显示图标的组件。
Then I surrounded the JLabel with a JScrollPane
However, when I reduce the windows size, the image is not being reduced in size but instead stays the same
您不应该使用 JScrollPane。当滚动 Pane 缩小时,添加到滚动 Pane 的组件的大小不会改变。相反,会显示滚动条。
I'm using the provided GroupLayout and set the horizontal and vertical axes to "Auto-Resizable
我不会使用 IDE 来生成布局代码,也不会使用 GroupLayout,因为对于如此简单的事情来说它过于复杂。
只需将标签(使用 StretchIcon)添加到框架即可。默认情况下,框架使用 BorderLayout,它将自动调整添加到 BorderLayout 中心的任何组件的大小。
关于java - 如何在更改 JLabel 大小时动态缩放图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51848307/
我已经创建了一个蛇梯游戏,它运行良好,但现在我想对其进行一些修改。我希望每个玩家都有两个棋子/玩家而不是一个。现在的新规则变成,同一玩家的两个棋子可以占据同一个方 block ,因此我需要一种方法将它
抱歉标题含糊不清,但我想不出我想在标题中做什么。无论如何,对于图像上的文本,我使用了 JLabel 文本并将其添加到图标中。 JLabel icon = new JLabel(new Imag
我想将我的私有(private) jlabel 对象复制到一个新的 jlabel 对象并将新的 jlabel 对象公开。想法是允许任何人访问 jlabel 的属性,但不允许进行任何将显示在原始界面上的
我有一个由二维 int 数组组成的网格。 基本包含00、01、02等,无需赘述。 我有一种提取网格位置的方法,然后使用字符串生成器操作字符串,将其更改为“jxy”(x = 网格中的 x 位置,y =
我目前正在尝试将 tabIconLabels(即 JLabels)放在更大的 JLabel(tabAreaLabel)上(所有标签都附加有 ImageIcon)。我尝试使用 OverlayLayout
我一直在尝试将一个 JLabel 放在另一个 Roguelike 之上。不幸的是,它似乎不起作用。到目前为止,这是我的代码: public void updateDraw(int direction)
我正在为 Tic Tac Toe 项目开发 GUI,其中我希望在单击相应区域时显示图像(玩家的移动)。但是,我不知道如何在另一个 JLabel(背景)之上显示 JLabel(移动)。 我已经搜索并尝试
public void movePiece(JLabel destination){ JLabel currentPiece = piece[oldIndex[0]][oldIndex[1]];
我在这方面遇到了障碍,希望能得到一些见解。 这是我想要实现的基本要点: -我有一个 piece 类(扩展 JPanel),它有一个 JRadioButton 数组,以及一个 JLabel 根据选择的按
我有一个名为 iconLabel 的类,它扩展 JLabel 来制作按钮。我使用 Font Awesome 字体将 JLabel 的文本设置为图标。我还在构造函数中向 iconLabel 对象添加了另
我对Java真的很陌生,我想制作一个简单的GUI,其中有一个按钮,当你点击它时就会计数,我遵循this YouTube 上的教程即可实现这一目标。一切都很顺利,一切都很顺利。但有一件事没有,JLabe
假设我有一个 JLabel 大小 20x20。现在假设我添加了字符串“The Quick Brown Fox Jumps Over the Lazy Dog”。这句话对于 JLabel 来说太长,因此
我有以下代码: try { File file_background = new File( "C:\\Users\\xxxx\\Desktop\\ba
我使用 netbean 创建了一个 jframe,并向该 jframe 添加了一个 jlabel (changeLbl)。之后,我向该 jframe 添加了一个 jbutton。现在我需要创建一个新的
Game(){ JFrame frame = new JFrame("Display Image"); JPanel panel = (JPanel)frame.getContentP
我在 swing 中使用带有图标的 Jlabel。我从我的计算机中选择了一个图像作为图标,但我找不到一种方法让它自动调整为 Jlabel 的大小。因为我想要的图像比 Jlabel 的大小大得多,所以我
是否可以在另一个 JLabel 之上添加一个 JLabel?谢谢。 最佳答案 简短的回答是肯定的,因为 JLabel是 Container , 所以它可以接受 Component (JLabel 是
我试图在我的 GUI 中显示卡片,我想重叠卡片以节省空间。但是,我似乎无法让它工作。我目前正在使用 MigLayout,尽管感觉它更像是一个 JLabel 问题而不是其他问题。 要从高层次来描述它,请
我正在将布局设置为 null,我有一个具有宽高比的 JFrame,并且在调整大小期间,该框架保持相同的宽高比。 每次我调整框架大小时,我都会调整所有组件的大小,没有任何问题,只是使用 JLabel 调
现在,我正在开发另一个 JPanel与 9 JLabel每个分配有不同的 Color 。应用程序要做的是,当用户单击第一个面板时,除了 JLabel 的颜色发生变化之外,不会发生任何事情。将被注册到实
我是一名优秀的程序员,十分优秀!