| I l@ve RuBoard |
|
4.5 Implementing Your Own IconsHere's a class that implements the Icon interface and uses ovals as simple icons: // OvalIcon.java
//
import javax.swing.*;
import java.awt.*;
// A simple icon implementation that draws ovals
public class OvalIcon implements Icon {
private int width, height;
public OvalIcon(int w, int h) {
width = w;
height = h;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
g.drawOval(x, y, width-1, height-1);
}
public int getIconWidth( ) { return width; }
public int getIconHeight( ) { return height; }
}
A simple class that creates a few labels shows how it works: // TestOval.java
//
import javax.swing.*;
import java.awt.*;
public class TestOval {
public static void main(String[] args) {
JFrame f = new JFrame( );
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label1 = new JLabel(new OvalIcon(20,50));
JLabel label2 = new JLabel(new OvalIcon(50,20));
JLabel label3 = new JLabel("Round!", new OvalIcon(60,60), SwingConstants.CENTER);
label3.setHorizontalTextPosition(SwingConstants.CENTER);
Container c = f.getContentPane( );
c.setLayout(new FlowLayout( ));
c.add(label1);
c.add(label2);
c.add(label3);
f.pack( );
f.setVisible(true);
}
}
Running this test program produces the display shown in Figure 4-7. Figure 4-7. OvalIcon labels![]() |
| I l@ve RuBoard |
|