BulbTest2.java
import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; class bulb implements ActionListener { boolean on; Color C; int x, y; int radius = 25; String name; public bulb() { C = Color.blue; on = true; x = 100; y = 100; name = "bulb"; } public bulb(String name, int x, int y, Color C) { this.C = C; this.x = x; this.y = y; this.name = name; on = true; } public void draw(Graphics g) { if (on) g.setColor( C ); else g.setColor(C.darker().darker()); g.fillOval(x-radius,y-radius,2*radius,2*radius); } public void change_state() { on = !on; } public String toString() { return "bulb " + name + " " + on; } public void actionPerformed(ActionEvent e) { on = !on; System.out.println(this); } } public class BulbTest2 extends JPanel implements ActionListener { static final int N = 4; JButton[] b = new JButton[N]; bulb[] bulbs = new bulb[N]; JPanel lower; String[] names = { "one", "two", "three", "four", "five", "six", "seven" }; Color[] colors = { Color.yellow, Color.green, Color.blue, Color.red, Color.magenta, Color.orange, Color.pink }; public BulbTest2() { setPreferredSize(new Dimension(20+65*N,60)); lower = new JPanel(new FlowLayout()); for (int i=0; i<N; i++) { bulbs[i] = new bulb(names[i],30+65*i,30,colors[i]); b[i] = new JButton(names[i]); b[i].addActionListener(bulbs[i]); b[i].addActionListener(this); lower.add(b[i]); } } public void paintComponent(Graphics g) { super.paintComponent(g); for (int i=0; i<N; i++) bulbs[i].draw(g); } public static void main(String[] args) { BulbTest2 panel = new BulbTest2(); JFrame app = new JFrame("Bulb Test 2"); app.getContentPane().add(panel); app.getContentPane().add(panel.lower,BorderLayout.SOUTH); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.pack(); app.setVisible(true); } public void actionPerformed(ActionEvent e) { repaint(); } }
Maintained by John Loomis, updated Tue Oct 01 07:47:47 2013