我已经扩展了jEditorPane以包含并显示内存中的bufferedimage,但它没有正确绘制。我究竟做错了什么?

时间:2010-08-11 23:28:04

标签: java image bufferedimage jeditorpane

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

公共类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;
}

}

1 个答案:

答案 0 :(得分:0)

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

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

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

label.setSize( label.getPreferredSize() );

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

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