Icon Changes at runtime

This section illustrates you how to create an icon that changes from at
runtime.
To create an icon, we have defined Icon class which provides three methods getIconWidth(),
getIconHeight() and paintIcon(). We have defined two sliders using JSlider class to show the changes related to
height and width of the icon.
The method g.fillOval(p, q, getIconWidth(), getIconHeight()) draws the oval
shape. The method stateChanged() is invoked when the state is changed by
the listener. To layout a container to arrange and resize its components and define five regions: north, south, east, west, and
center, the class BorderLayout is used. The slider showing width is directed to the north by
BorderLayout.NORTH and the slider showing height is directed to the south by
BorderLayout.SOUTH. The icon is directed to the center
BorderLayout.CENTER.
Here is the code of IconChangesForm.java
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class IconChangesForm {
public static void main(String[] args) {
final JSlider w = new JSlider(JSlider.HORIZONTAL, 1, 150, 70);
final JSlider h = new JSlider(JSlider.HORIZONTAL, 1, 150, 70);
class FormIcon implements Icon {
public int getIconWidth() {
return w.getValue();
}
public int getIconHeight() {
return h.getValue();
}
public void paintIcon(Component component, Graphics g, int p, int q)
{
g.fillOval(p, q, getIconWidth(), getIconHeight());
}
}
Icon icon = new FormIcon();
final JLabel label = new JLabel(icon);
class Form implements ChangeListener {
public void stateChanged(ChangeEvent event) {
label.repaint();
}
}
Form form = new Form();
w.addChangeListener(form);
h.addChangeListener(form);
JFrame frame = new JFrame("Form Icon");
Container container = frame.getContentPane();
container.setLayout(new BorderLayout());
container.add(w, BorderLayout.NORTH);
container.add(h, BorderLayout.SOUTH);
container.add(label, BorderLayout.CENTER);
frame.setSize(200, 200);
frame.show();
}
} |
Output will be displayed as:

Download Source Code

|