2010-08-11 9 views
0

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

общественного класса 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; 
} 

}

ответ

0

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

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

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

label.setSize(label.getPreferredSize()); 

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

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