我有JTextPane,实现了图像的大小调整。我通过声明我自己的IconView和我自己的使用这个IconView的EditorKit来制作它。每当用户改变图片大小时,我都会调用JTextPane方法paintAll()。
改变尺寸之前和之后一切都好。但是在拖动图片的过程中,我希望在前面有图片。
在拖动之前(正确)
在拖动第一张照片(糟糕的Zorder )
期间拖动(正确)后
在拖动第二张照片期间(正确,因为第二张照片是在第一张照片之后绘制的)
据我所知,它是由JTextPane中的组件顺序引起的,但我不知道如何命令JTextPane将此图片描绘为最后一张。知道怎么做吗?
答案 0 :(得分:1)
有多种可能的方法。首先,您应该在拖动过程中忽略视图的绘制。
创建一个没有边框但只有一个图像的JWindow。调整窗口大小,拖动结束后,只需获取窗口大小并将其应用回图像。
覆盖JTextPane的paintComponent()并保持draggedPicture引用。在拖动过程中跳过拖动视图的绘画,但改为在paintComponent()
保留拖动的矩形,并将其从所有未拖动视图的paint()方法中的Graphics剪辑中排除。像这样
Shape oldCliep=g.getClip();
Area newClip=new Area(oldClip);
newClip.subtract(draggedImageBoundRect);
g.setClip(newClip);
//do all your paint e.g. super.paint() and restore clip
g.setClip(oldClip);