I'm new to Java and I'm experimenting with GUI. I'm trying to create an image that dynamically scales with the size of the window. What I've created to attempt this is very laggy and dysfunctional. My code fails to paint over previous images and seems very inefficient. Is there a better way to automatically scale an image with the size of the window?
My Code:
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
public class DynamicImageScaleEx {
static JFrame frame;
static JLabel ImageLabel;
static ImageIcon imageIcon;
public static void main(String[] args) {
new DynamicImageScaleEx();
frame.setVisible(true);
}
public DynamicImageScaleEx() {
frame = new JFrame();
frame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
imageIcon= new ImageIcon(new ImageIcon("image.png").getImage().getScaledInstance(frame.getWidth(), frame.getHeight(), Image.SCALE_SMOOTH));
ImageLabel = new JLabel(imageIcon);
frame.getContentPane().add(ImageLabel);
}});
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
imageIcon = new ImageIcon(new ImageIcon("image.png").getImage().getScaledInstance(frame.getWidth(), frame.getHeight(), Image.SCALE_SMOOTH));
ImageLabel = new JLabel(imageIcon);
ImageLabel.setBounds(190, 126, 61, 16);
frame.getContentPane().add(ImageLabel);
}
}