Я расширил jEditorPane для хранения и отображения буферизованного изображения из памяти, но он не рисует должным образом. Что я делаю неправильно? - PullRequest
0 голосов
/ 12 августа 2010

Я расширил jEditorPane, как показано ниже (за исключением кода экземпляра).Однако, когда я устанавливаю изображение и вызываю update для объекта, он рисует только небольшую часть изображения (эквивалентно тому, куда должна идти одна строка текста).Сомене можете сказать мне, что я делаю не так?

открытый класс 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;
}

}

1 Ответ

0 голосов
/ 12 августа 2010

Я не понимаю, что вы пытаетесь сделать.Похоже, вы пытаетесь нарисовать изображение поверх текста в панели редактора.

Прежде всего, вы никогда не должны вызывать update ().Swing определит, когда необходимо выполнить рисование.

Если вы хотите нарисовать изображение поверх панели редактора, нет необходимости добавлять пользовательские рисунки в панель редактора.Все, что вам нужно сделать, это создать JLabel и добавить ImageIcon к метке.Затем добавьте метку на панель редактора.Убедитесь, что вы используете:

label.setSize( label.getPreferredSize() );

, и ярлык будет просто окрашен как дочерний компонент панели редактора.

Если вам нужна дополнительная помощь, опубликуйте SSCCE показывая проблему.

...