0

我已经扩展了 jEditorPane,如下所示(减去实例化代码)。但是,当我设置图像并在对象上调用更新时,它只绘制图像的一小部分(相当于一行文本的位置)。有人可以告诉我我在这里做错了什么吗?

公共类 JEditorPaneImg 扩展 JEditorPane {

private BufferedImage bi = null;

public JEditorPaneImg() {
    initComponents();
}

@Override
public void paint(Graphics g) {
    super.paint(g);
    if (bi != null) {
        Graphics2D g2 = (Graphics2D) g;
        g2.drawImage(bi, 0, 0, this);
    }
}

public void setImage(BufferedImage image){
    bi = image;
}

}

4

1 回答 1

0

我不明白你想做什么。看起来您正试图在编辑器窗格中的文本顶部绘制图像。

首先,您永远不应该调用 update()。Swing 将决定何时需要进行绘画。

如果您想在编辑器窗格顶部绘制图像,则无需将自定义绘制添加到编辑器窗格。您所做的就是创建一个 JLabel 并将 ImageIcon 添加到标签。然后将标签添加到编辑器窗格。确保您使用:

label.setSize( label.getPreferredSize() );

并且标签将被简单地绘制为编辑器窗格的子组件。

如果您需要更多帮助,请发布您的SSCCE 以显示问题。

于 2010-08-12T00:56:34.447 回答