我正在构建一个处理截图的小型Java应用程序。 我有一个自定义的类,它继承自JPanel,名为ScreenshotPanel,它保存图像,它位于JScrollPane中。 ScrollPane在框架大小调整时移动并调整大小。 除缩放部分之外的所有其他效果都很好,我希望能够控制ScrollPane中的screenshotPanel的大小,但是screenshotPanel不会调整大小,它会以合适的大小闪烁片刻,但随后它会被调整回到ScrollPane大小。正确调整JScrollPane及其内容的大小
如果我使用不带ScrollPane的screenshotPanel,它的工作原理是正确的,但我希望它能自动添加滚动条,以便您可以在放大时看到移动图像。
这里是我使用来调整代码的一部分:
double AR=((double)screenshotPanel.getImage().getHeight())/screenshotPanel.getImage().getWidth();
screenshotPanel.setSize((int)((getWidth()-180)*zoomFactor), (int)((AR*(getWidth()-180)-100)*zoomFactor));
scrollPane.setSize(getWidth()-180, (int)(AR*(getWidth()-180))-100);
-180和-100是用来保持一空间,按钮和变焦控制其它的组件(其中所有移动和调整完美), zoomFactor是一个保存放大量的双精度值。
如何在没有ScrollPane的情况下调整ScrollPane中的screenshotPanel强制其大小?
闪烁从JViewport的或JScrollBars或边界或其他???引起的,一切都只会有拍摄,没有SSCCE的黑暗 – mKorbel
问题是你试图在JLabel中使用ImageIcon,或者你使用BuferrefedImage或scaledInstance(简单地是异步) – mKorbel
你是对的我应该提到,我使用了一个BufferedImage作为screenshotPanel的图像。 – Bob