⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmdgardener.java

📁 < JAVA模式>>的源代码
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;

//illustrates use of Abstract Factory pattern
public class Gardener extends Frame
   implements ActionListener, ItemListener
{
   private checkCommand Vegie, Annual, Peren;
   private Button Center, Border, Shade, Quit;
   private Garden garden = null;
   private GardenPanel gardenPlot;
   private String borderPlant = "", centerPlant = "", shadePlant = "";

   public Gardener()
   {
      setGUI();
   }
   //----------------------------------
   private void setGUI()
   {
      setLayout(new GridLayout(1,2));
      Panel left = new Panel();
      add(left);
      Panel right= new Panel();
      add(right);

      //create label and 3 radio buttons on left side
      left.setLayout(new GridLayout(4, 1));
      left.add(new Label("Garden type"));
      CheckboxGroup grp= new CheckboxGroup();
      Vegie = new checkCommand("Vegetable", grp, new GardenMaker("Vegie", this));
      Annual = new checkCommand("Annual", grp, new GardenMaker("Annual", this));
      Peren = new checkCommand("Perennial", grp, new GardenMaker("Peren", this));
      left.add(Vegie);
      left.add(Annual);
      left.add(Peren);
      Vegie.addItemListener(this);
      Peren.addItemListener(this);
      Annual.addItemListener(this);

      //now create right side
      right.setLayout(new GridLayout(2,1));
      gardenPlot = new GardenPanel();
      Panel botRight = new Panel();
     
      right.add(gardenPlot);
      right.add(botRight);
      Center = new Button("Central");
      Border =  new Button("Border");
      Shade = new Button("Shade");
      Quit = new Button("Quit");
      botRight.add(Center);
      Center.addActionListener(this);
      botRight.add(Border);
      Border.addActionListener(this);
      botRight.add(Shade);
      Shade.addActionListener(this);
      botRight.add(Quit);
      Quit.addActionListener(this);
      setBounds(200,200, 400,300);
      setVisible(true);

    }
   //----------------------------------
   public void setGarden(Garden g)
   {
      garden = g;
      shadePlant=""; centerPlant=""; borderPlant = "";
      gardenPlot.repaint();
   }                                   
   //----------------------------------
   public void actionPerformed(ActionEvent e)
   {
      Object obj = e.getSource();
      if(obj == Center)
         setCenter();
      if(obj == Border)
         setBorder();
      if(obj == Shade)
         setShade();
      if(obj == Quit)
         System.exit(0);
   }
   //----------------------------------
   private void setCenter()
   {
      centerPlant = garden.getCenter();
      gardenPlot.repaint();
   }
   private void setBorder()
   {
      borderPlant = garden.getBorder();
      gardenPlot.repaint();
   }
   private void setShade()
   {
      shadePlant = garden.getShade();
      gardenPlot.repaint();
   }
   //----------------------------------
   public void itemStateChanged(ItemEvent e)
   {
      Command cmd = (Command)e.getSource();
      cmd.Execute();
   }
   //----------------------------------
   static public void main(String argv[])
   {
      new Gardener();
   }
   
   
//--------------------------------
class GardenPanel extends Panel
 {
   public void paint (Graphics g)
   {
      Dimension sz=getSize();
      g.setColor(Color.lightGray);
      g.fillArc( 0, 0, 80, 80,0, 360);
      g.setColor(Color.black);
      g.drawRect(0,0, sz.width-1, sz.height-1);
      g.drawString(centerPlant, 100,50);
      g.drawString( borderPlant, 75,120);
      g.drawString(shadePlant, 10,20);
   }
 }
}     //end of Gardener class
//=============================================

class GardenMaker implements Command
{
   private String garden_type;
   private Gardener gard;
   public GardenMaker(String gtype, Gardener g)
   {
      garden_type = gtype;
      gard = g;
   }
   public void Execute()
   {
      Garden gd = new VegieGarden();   //default
      if(garden_type.equals("Peren"))
           gd = new PerenGarden();
      if(garden_type.equals("Annual"))
           gd = new AnnualGarden();

      gard.setGarden(gd);
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -