17.3

 

  1 import java.awt.BorderLayout;
  2 import java.awt.Color;
  3 import java.awt.Graphics;
  4 import java.awt.GridLayout;
  5 import java.awt.event.ActionEvent;
  6 import java.awt.event.ActionListener;
  7 
  8 import javax.swing.*;
  9 
 10 public class Test_17_3 extends JFrame{    
 11     private final int YSTART = 20;
 12     private final int VGAP = 2;
 13     private final int XGAP = 2;
 14     private Color myColor = Color.BLACK;
 15     
 16     ButtonGroup group = new ButtonGroup();
 17     JRadioButton jrb1 = new JRadioButton("red");
 18     JRadioButton jrb2 = new JRadioButton("blue");
 19     JRadioButton jrb3 = new JRadioButton("yellow");    
 20     
 21     trafficPanel tP = new trafficPanel();
 22     public Test_17_3(){    
 23         
 24         JPanel jgButtons = new JPanel();
 25         jgButtons.setLayout(new GridLayout(1,3));
 26         jgButtons.add(jrb1);
 27         jgButtons.add(jrb2);
 28         jgButtons.add(jrb3);
 29         
 30         group.add(jrb1);
 31         group.add(jrb2);
 32         group.add(jrb3);    
 33         
 34         setLayout(new BorderLayout());
 35         add(jgButtons,BorderLayout.SOUTH);
 36         add(tP,BorderLayout.CENTER);    
 37         
 38         jrb1.addActionListener(new ActionListener(){
 39 
 40             @Override
 41             public void actionPerformed(ActionEvent arg0) {
 42                 // TODO Auto-generated method stub
 43                 myColor = Color.RED;
 44                 tP.setColor = true;                
 45                 repaint();
 46             }
 47             
 48         });
 49         jrb2.addActionListener(new ActionListener(){
 50 
 51             @Override
 52             public void actionPerformed(ActionEvent arg0) {
 53                 // TODO Auto-generated method stub
 54                 myColor = Color.BLUE;
 55                 tP.setColor = true;                
 56                 repaint();
 57             }
 58             
 59         });
 60         jrb3.addActionListener(new ActionListener(){
 61 
 62             @Override
 63             public void actionPerformed(ActionEvent arg0) {
 64                 // TODO Auto-generated method stub
 65                 myColor = Color.YELLOW;
 66                 tP.setColor = true;                
 67                 repaint();
 68             }
 69             
 70         });
 71     }
 72     public static void main(String[] args) {
 73         // TODO Auto-generated method stub
 74         Test_17_3 frame = new Test_17_3();
 75         frame.setTitle("Test_17_3");
 76         frame.setSize(300,200);
 77         frame.setLocationRelativeTo(null);
 78         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 79         frame.setVisible(true);
 80     }
 81     
 82     
 83     class trafficPanel extends JPanel{
 84         public boolean setColor = false;
 85         
 86         protected void paintComponent(Graphics g){
 87             int xCenter = getWidth()/2;
 88             int yCenter = getHeight()/2;
 89             
 90             int radius = getHeight() /6 - 5;
 91             /** draw steady shape */
 92             //draw rect
 93             g.drawRect(xCenter -radius,YSTART, 2*radius,getHeight()-20 -VGAP);
 94             //draw three circles
 95             g.drawOval(xCenter - radius + XGAP, YSTART + VGAP, 2*radius -2*XGAP , 2*radius-2*XGAP);
 96             g.drawOval(xCenter - radius + XGAP, YSTART + 2*radius + 2*VGAP,2*radius -2*XGAP , 2*radius-2*XGAP);
 97             g.drawOval(xCenter - radius + XGAP, YSTART + 4*radius + 3*VGAP,2*radius -2*XGAP , 2*radius-2*XGAP );
 98             
 99             if(setColor)
100             {                
101                 if(myColor == Color.RED)        
102                 {g.setColor(Color.RED); g.fillOval(xCenter - radius + XGAP, YSTART + VGAP, 2*radius -2*XGAP , 2*radius-2*XGAP);}
103                 else if(myColor == Color.BLUE)
104                 {g.setColor(Color.BLUE); g.fillOval(xCenter - radius + XGAP, YSTART + 2*radius + 2*VGAP,2*radius -2*XGAP , 2*radius-2*XGAP);} 
105                 else
106                 {g.setColor(Color.YELLOW);g.fillOval(xCenter - radius + XGAP, YSTART + 4*radius + 3*VGAP,2*radius -2*XGAP , 2*radius-2*XGAP );}                                
107             }
108         }
109     }
110 }
Test_17_3.java

 

posted on 2016-07-27 21:22  功夫茶茶  阅读(70)  评论(0编辑  收藏  举报

导航