Here’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.
Get Java Swing, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.