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