У меня одна проблема с моей панелью jPanel. У меня есть кнопка, которая представляет PNG-изображение из ввода String (математическая формула), а затем перекрашивает старое изображение в jPanel. И вот проблема. Изображение было изменено, но jPanel не перерисовывается, пока я вручную не изменю размер окна приложения.
Похоже, панель не перерисовывается до тех пор, пока не изменится размер. Но я понятия не имею, как это сделать в этой кнопке.
Я пробовал это и this, но без изменений.
Кстати. Я использую GUI Builder в netbeans.
Мой код ... первая попытка:
public class ImagePanel extends JPanel {
private String path;
Image img;
public ImagePanel() {
try {
//save path
path = "Example5.png";
//load image
img = ImageIO.read(new File(path));
} catch (IOException ex) {
}
}
@Override
public void paint(Graphics g) {
//draw the image
if (show) {
try {
if (img != null) {
img = ImageIO.read(new File(path));
g.drawImage(img, 0, 0, this);
}
} catch (IOException ex) {
}
} else {
show = true;
}
}
}
и в методе класса / кнопки Window:
imagePanel = new ImagePanel();
imagePanel.repaint();
imagePanel.updateUI();
вторая попытка:
public class ImagePanel extends JPanel {
private String path;
Image img;
ImagePanel(Image img) {
this.img = img;
}
public void setImg(Image img) {
this.img = img;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Draw image centered in the middle of the panel
g.drawImage(img, 0, 0, this);
}
}
и кнопка:
imagePanel.setImg(new ImageIcon("2.png").getImage());
imagePanel.repaint();