JTextPane中的Zorder

时间:2015-03-07 11:08:00

标签: paint jtextpane z-order

我有JTextPane,实现了图像的大小调整。我通过声明我自己的IconView和我自己的使用这个IconView的EditorKit来制作它。每当用户改变图片大小时,我都会调用JTextPane方法paintAll()。

改变尺寸之前和之后一切都好。但是在拖动图片的过程中,我希望在前面有图片。

在拖动之前(正确)

Before dragging

在拖动第一张照片(糟糕的Zorder

期间

拖动(正确)后

在拖动第二张照片期间(正确,因为第二张照片是在第一张照片之后绘制的)

据我所知,它是由JTextPane中的组件顺序引起的,但我不知道如何命令JTextPane将此图片描绘为最后一张。知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

有多种可能的方法。首先,您应该在拖动过程中忽略视图的绘制。

  1. 创建一个没有边框但只有一个图像的JWindow。调整窗口大小,拖动结束后,只需获取窗口大小并将其应用回图像。

  2. 覆盖JTextPane的paintComponent()并保持draggedPicture引用。在拖动过程中跳过拖动视图的绘画,但改为在paintComponent()

  3. 中调整大小并绘制(在调用super之后)拖动的图像
  4. 保留拖动的矩形,并将其从所有未拖动视图的paint()方法中的Graphics剪辑中排除。像这样


  5. 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);