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

📄 changeanimalwindow.java

📁 《Java课程设计》第二版
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.io.*;
import javax.swing.filechooser.*;
public class ChangeAnimalWindow extends JFrame implements ActionListener{
   int amountOfAnimal=6;
   int distance=80;
   Animal [] animal;
   Point [] point;
   Stone [] stone;
   HandleMouse handleMouse;
   AutoMoveAnimal autoMoveAnimal;
   File leftImageFile,rightImageFile;
   JButton renew,quit,autoButton=null;
   JMenuBar bar;
   JMenu menuGrade,menuImage;
   JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;
   JMenuItem leftIamge,rightIamge,defaultImage; 
   JPanel pCenter;
   ChangeAnimalWindow(){
      pCenter=new JPanel();
      pCenter.setBackground(Color.lightGray); 
      pCenter.setLayout(null);
      handleMouse=new HandleMouse();
      autoMoveAnimal=new AutoMoveAnimal(); 
      leftImageFile=new File("dog.jpg"); 
      rightImageFile=new File("cat.jpg"); 
      init();
      bar=new JMenuBar();
      menuGrade=new JMenu("选择级别");
      menuImage=new JMenu("选择动物图像(JPG,GIF)");
      oneGradeItem=new JMenuItem("初级");
      twoGradeItem=new JMenuItem("中级");
      threeGradeItem=new JMenuItem("高级");
      leftIamge=new JMenuItem("左面动物的图像");
      rightIamge=new JMenuItem("右面动物的图像"); 
      defaultImage=new JMenuItem("左右面动物的默认图像");
      menuGrade.add(oneGradeItem);
      menuGrade.add(twoGradeItem);
      menuGrade.add(threeGradeItem);
      menuImage.add(leftIamge);
      menuImage.add(rightIamge);
      menuImage.add(defaultImage);
      bar.add(menuGrade);
      bar.add(menuImage);
      setJMenuBar(bar);
      oneGradeItem.addActionListener(this);
      twoGradeItem.addActionListener(this);
      threeGradeItem.addActionListener(this);
      leftIamge.addActionListener(this); 
      rightIamge.addActionListener(this);
      defaultImage.addActionListener(this);
      renew=new JButton("重新开始");
      renew.addActionListener(this);
      autoButton=new JButton("自动演示");
      autoButton.addActionListener(this);
      quit=new JButton("撤消");
      quit.addActionListener(this);
      JPanel north=new JPanel();
      north.add(renew);
      north.add(quit);
      north.add(autoButton); 
      String mess="互换左右动物位置";
      JLabel hintMess=new JLabel(mess,JLabel.CENTER);
      north.add(hintMess); 
      add(north,BorderLayout.NORTH);
      add(pCenter,BorderLayout.CENTER);      
      JPanel south=new JPanel();
      south.add(handleMouse);
      add(south,BorderLayout.SOUTH);
      setVisible(true);
      setBounds(60,60,710,300);
      validate();
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
   }
   public void init(){
      animal=new Animal[amountOfAnimal];
      point=new Point[amountOfAnimal+1];
      stone=new Stone[amountOfAnimal+1];
      int space=distance;
      for(int i=0;i<point.length;i++){
          point[i]=new Point(space,100);
          space=space+distance; 
      }    
      for(int i=0;i<animal.length;i++){
         animal[i]=new Animal();
         animal[i].addMouseListener(handleMouse);
         if(i<animal.length/2){
            animal[i].setIsLeft(true);
         }
         else{
            animal[i].setIsLeft(false);
         }  
      }
      for(int i=0;i<stone.length;i++){
         stone[i]=new Stone();
         pCenter.add(stone[i]);
         stone[i].setSize(distance*8/9,18);
         int w=stone[i].getBounds().width;
         int h=stone[i].getBounds().height;
         stone[i].setLocation(point[i].getX()-w/2,point[i].getY());
         point[i].setThisStone(stone[i]);
      } 
      for(int i=0;i<animal.length;i++){
          animal[i].setSize(distance*6/7,distance*3/4);  
          int w=animal[i].getBounds().width;
          int h=animal[i].getBounds().height;
          pCenter.add(animal[i]);
          if(i<animal.length/2){             
               animal[i].setIsLeft(true);
               animal[i].setLeftImage(leftImageFile);
               animal[i].repaint();
               animal[i].setLocation(point[i].getX()-w/2,point[i].getY()-h);
               animal[i].setAtPoint(point[i]);
               point[i].setThisAnimal(animal[i]);
               point[i].setIsHaveAnimal(true);
          }  
          else{
               animal[i].setIsLeft(false);
               animal[i].setRightImage(rightImageFile);
               animal[i].repaint();
               animal[i].setLocation(point[i+1].getX()-w/2,point[i+1].getY()-h);
               animal[i].setAtPoint(point[i+1]);  
               point[i+1].setThisAnimal(animal[i]);
               point[i+1].setIsHaveAnimal(true);
          } 
      } 
      handleMouse.setPoint(point);
      handleMouse.setCountTime(true);
      autoMoveAnimal.setPoint(point);
      autoMoveAnimal.setStep();  
   }
   public void setAmountOfAnimal(int m){
      if(m>=2&&m%2==0)
         amountOfAnimal=m;
   }
   public void removeAnimalAndStone(){
      for(int i=0;i<point.length;i++){
          if(point[i].getThisAnimal()!=null)
            pCenter.remove(point[i].getThisAnimal());
      }
      for(int i=0;i<stone.length;i++){
          if(point[i].getThisStone()!=null)
            pCenter.remove(point[i].getThisStone());
      }
      pCenter.validate();
      pCenter.repaint();
   }
   public void needDoing(){
       init();
       handleMouse.initStep();
       handleMouse.initSpendTime();
       handleMouse.setCountTime(true);
       autoMoveAnimal.setPoint(point);
   }
   public void actionPerformed(ActionEvent e){
      if(e.getSource()==oneGradeItem){
         distance=80;
         removeAnimalAndStone();
         setAmountOfAnimal(6);
         needDoing();    
      }
      else if(e.getSource()==twoGradeItem){
         distance=70;
         removeAnimalAndStone();
         setAmountOfAnimal(8);
         needDoing();
      }
      else if(e.getSource()==threeGradeItem){
         distance=60;
         removeAnimalAndStone();
         setAmountOfAnimal(10);
         needDoing();   
      }
      else if(e.getSource()==renew){
          removeAnimalAndStone();
          needDoing();
      }
      else if(e.getSource()==autoButton){
         removeAnimalAndStone();
         needDoing();
         handleMouse.setCountTime(false);
         autoMoveAnimal.setStep(); 
         int x=this.getBounds().x+this.getBounds().width/2;
         int y=this.getBounds().y+this.getBounds().height;
         autoMoveAnimal.setLocation(x,y);
         autoMoveAnimal.setSize(this.getBounds().width/2,120);  
         autoMoveAnimal.setVisible(true);
      }
      else if(e.getSource()==quit){
          ArrayList<Integer> step=handleMouse.getStep();
          int length=step.size();
          int start=-1,end=-1;
          if(length>=2){
              end=step.get(length-1);
              start=step.get(length-2);
              step.remove(length-1);
              step.remove(length-2);
              Animal ani=point[end].getThisAnimal();
              int w=ani.getBounds().width;
              int h=ani.getBounds().height; 
              ani.setLocation(point[start].getX()-w/2,point[start].getY()-h);
              ani.setAtPoint(point[start]);  
              point[start].setThisAnimal(ani);
              point[start].setIsHaveAnimal(true);       
              point[end].setIsHaveAnimal(false);
          }
      }
      else if(e.getSource()==leftIamge){
           JFileChooser chooser=new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter(
            "JPG & GIF Images", "jpg", "gif");
           chooser.setFileFilter(filter);
           int state=chooser.showOpenDialog(null);
           File file=chooser.getSelectedFile();
           if(file!=null&&state==JFileChooser.APPROVE_OPTION){
               leftImageFile=file;
               for(int i=0;i<animal.length;i++){
                  if(animal[i].getIsLeft()==true){
                     animal[i].setLeftImage(leftImageFile); 
                     animal[i].repaint();   
                  }
               }  
           }
      }
      else if(e.getSource()==rightIamge){
          JFileChooser chooser=new JFileChooser();
          FileNameExtensionFilter filter = new FileNameExtensionFilter(
          "JPG & GIF Images", "jpg", "gif");
           chooser.setFileFilter(filter);
           int state=chooser.showOpenDialog(null);
           File file=chooser.getSelectedFile();
           if(file!=null&&state==JFileChooser.APPROVE_OPTION){
               rightImageFile=file;
               for(int i=0;i<animal.length;i++){
                  if(animal[i].getIsLeft()==false){
                     animal[i].setRightImage(rightImageFile);
                     animal[i].repaint(); 
                  }
               }  
           }
      }
      else if(e.getSource()==defaultImage){
         leftImageFile=new File("dog.jpg"); 
         rightImageFile=new File("cat.jpg");
         for(int i=0;i<animal.length;i++){
              if(animal[i].getIsLeft()==true)
                  animal[i].setLeftImage(leftImageFile);
              else
                  animal[i].setRightImage(rightImageFile);
              animal[i].repaint();
         }   
      }
      validate();
   }
   public static void main(String args[]){
      new ChangeAnimalWindow();
   }
}


⌨️ 快捷键说明

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