0

以下に示すように jEditorPane を拡張しました (インスタンス化コードを除く)。ただし、画像を設定してオブジェクトの update を呼び出すと、画像のごく一部しか描画されません (テキストの 1 行に相当します)。ここで私が間違っていることを誰かに教えてもらえますか?

public class JEditorPaneImg extends 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 に答える