The method getImage() from the type PImage is deprecated

void settingsUI() {
  frameSettings = new JFrame("Settings");
  frameSettings.setSize(500, 300);
  frameSettings.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  frameSettings.setResizable(false);
  frameSettings.setIconImage(icon.getImage());
  pnlMainSettings = new JPanel();
  pnlMainSettings.setBackground(Color.white);
  pnlMainSettings.setLayout(layoutSettings);
  //add components here
  drawPortConfig();
  drawDataConfig();
  drawLogConfig();
  frameSettings.add(pnlMainSettings);
  frameSettings.setLocationRelativeTo(null);
  frameSettings.setVisible(true);
}

Does anyone know what is the proper way to set a javaSwing JFrame icon.

This code works fine but the compiler says The method getImage() from the type PImage is deprecated.(I believe its converting an PImage to Image)

frameSettings.setIconImage(icon.getImage());

Any suggestions appreciated Thanks.

FYI:

Running vscode extension on WIN 10

2 Likes

The solution is to convert it to a buffered image.

BufferedImage convertToBufferedImage(PImage imgToConvert) {
  imgToConvert.loadPixels(); //load pixel data
  BufferedImage convertedImg = new BufferedImage(imgToConvert.width, imgToConvert.height, BufferedImage.TYPE_INT_ARGB);

  for (int y = 0; y < imgToConvert.height; y++) {
    for (int x = 0; x < imgToConvert.width; x++) {
      int loc = x + y * imgToConvert.width;
      convertedImg.setRGB(x, y, imgToConvert.pixels[loc]); // Copy pixel data
    }
  }
  return convertedImg;
}
BufferedImage javaIcon = convertToBufferedImage(icon);

Final code.

//draw main ui for settings window
void settingsUI() {
  frameSettings = new JFrame("Settings");
  frameSettings.setSize(500, 300);
  frameSettings.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  frameSettings.setResizable(false);
  BufferedImage javaIcon = convertToBufferedImage(icon);
  frameSettings.setIconImage(javaIcon);
  pnlMainSettings = new JPanel();
  pnlMainSettings.setBackground(Color.white);
  pnlMainSettings.setLayout(layoutSettings);
  //add components here
  drawPortConfig();
  drawDataConfig();
  drawLogConfig();
  frameSettings.add(pnlMainSettings);
  frameSettings.setLocationRelativeTo(null);
  frameSettings.setVisible(true);
}
3 Likes