Вот пример кода:JPanel's paintComponent();
public class MyClass extends JPanel
{
Image img;
public MyClass(Image img) {
this.img = img;
}
...
void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, this);
}
void someFunction() {
img = (Image) inputStream.getObject();
}
}
Будет paintComponent()
также получить автоматически вызывается, если img
так много, как получает совершенно новый Image
экземпляр?
Кроме того, существует ли применение методов paint()
и repaint()
в этом контексте?
Нет, Swing не будет перерисовываться, если вы присвоите переменной новое значение. Я рекомендую проверить [пользовательскую роспись в качели] (https://docs.oracle.com/javase/tutorial/uiswing/painting/). В 'someFunction' вы должны называть' repaint' –
Помните, что первая строка кода в переопределенном методе paintComponent * должна * быть 'super.paintComponent (g)'. В противном случае вы получите непредсказуемые артефакты. – VGR
Спасибо. Я полагаю, что 'repaint()' называет 'paintComponent()' внутренне, верно? @VGR: Не могли бы вы объяснить, почему это так? Например, что делает суперкласс '' paintComponent() 'специально и где будут происходить эти артефакты? – WIlopu