我正在尝试使用jSlider的值重新调整jPanel和jLable的大小。 (jLable在jPanel中),jLable有图像。
虽然我正在使用jSlider重新调整jlable的大小,但我想缩放以使该图像适合jLable。
问题是当我重新调整jLable和jPanel的大小时,它的重新调整大小并且图像适合不起作用。我想实时重新调整我的jLable和jPanel +比例图像适合jlable。
帮我解决这个问题
提前致谢!
private void jSlider2StateChanged(javax.swing.event.ChangeEvent evt) {
jPanel2.setSize(new Dimension(jSlider2.getValue(), jSlider2.getValue()));
jLabel3.setSize(new Dimension(jSlider2.getValue(), jSlider2.getValue()));
jPanel2.repaint();
jLabel2.repaint();
BufferedImage scaledImg = Scalr.resize(img, jLabel3.getHeight());
ImageIcon imageIcon = new ImageIcon(scaledImg);
jLabel3.setIcon(imageIcon);
}
答案 0 :(得分:1)
我认为你需要考虑使用ComponentListener
。将侦听器添加到相关标签或面板中,并在调用componentResized
时将内容缩放到新大小。 (上面的最后三行代码可以构成componentResized
实现的主体。)
另外,请注意以下几点:
jPanel2.repaint();
jLabel2.repaint();
repaint
方法只是请求Swing在可能的情况下重新绘制组件。它没有做任何“内联”重新绘制。
答案 1 :(得分:0)