这是我的工作和问题:

我正在尝试使用jSlider的值重新调整jPanel和jLable的大小。 (jLable在jPanel内部),并且jLable具有图像。

当我使用jSlider调整jlable的大小时,我想缩放以使该图像适合jLable。

我使用了imgscaler-4.2.jar库来调整适合jLable的图像大小。 (http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/

问题是,在即时调整jLable和jPanel的大小时,它正在重新调整大小,并且图像调整不起作用。我想实时调整我的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);

}

最佳答案

我认为您需要考虑使用ComponentListener。将侦听器添加到有问题的标签或面板中,并在调用componentResized时将内容缩放到新的大小。 (上面的最后三行代码可以构成componentResized实现的主体)。

另外,只需注意以下几点:

jPanel2.repaint();
jLabel2.repaint();


repaint方法仅是要求Swing尽可能重绘组件的请求。它不执行任何“内联”重绘。

关于java - Java实时JPanel,JLabel +图像大小调整,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19952304/

10-10 18:02