《Java课程实习》日志(周四)--猜猜看游戏

来源:互联网 发布:网络贷款征信查询平台 编辑:程序博客网 时间:2024/04/29 01:15
  
 通过四天的努力,基本上把猜猜看游戏完成。在学习的过程中,遇到很多困难。如GUI文件对话框的实现。
随机数的运行和产生。图片的随机产生,都比较困难。猜猜看游戏的成功运行,给了我很大信心。
体会:学好java需要大量的敲代码,合理通过网上查找不懂的东西。
 
import java.awt.EventQueue;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.JLabel;import java.awt.Image;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.io.FileFilter;import java.io.IOException;import java.util.Random;@SuppressWarnings("serial")public class Guess extends JFrame {    /**     *      */class myFileFilter implements FileFilter{//过滤文件类型~    @Override      public boolean accept(File pathname) {          String filename = pathname.getName().toLowerCase();          if(filename.contains(".jpg")){              return false;          }else{              return true;          }      }  }              private JPanel contentPane;    private JTextField tfDir;    private JTextField tfClass;    File[] fileArray;   // 文件夹下所有文件    int NUM_IMG = 0;    // 文件总数目    int index   = 0;    // 当前文件的序号    JLabel jlbImg = null;    JButton btnNext = null;    /**     * Launch the application.     */    //主函数~    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                   Guess frame = new Guess();                    frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the frame.     */    public Guess() {        setTitle("\u731C\u731C\u770B\u6E38\u620FV0.1");        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体~        setBounds(100, 100, 600, 500);//窗体的大小        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//边界布局~分成5行5列~        setContentPane(contentPane);        contentPane.setLayout(null);                // 选择目录 按钮的处理程序        JButton btnDir = new JButton("目录");        btnDir.addActionListener(new ActionListener() {//添加监听器~@Overridepublic void actionPerformed(ActionEvent e) {JFileChooser j=new JFileChooser();          j.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置Filechooser          j.showDialog(new JLabel(), "选择目录");         File file=j.getSelectedFile();        tfDir.setText(file.getAbsolutePath());//将路径显示在文本框~// TODO Auto-generated method stub        if((file!=null && file.isDirectory())){                    // 参考: java中File.listFiles(FileFilter) FileFilter的使用                     //  http://zhouzaibao.iteye.com/blog/347557 ;                                        // 获取文件夹下所有的文件                    fileArray = file.listFiles();                    NUM_IMG = fileArray.length;                                 }            }        });                  //按钮大小~        btnDir.setBounds(26, 26, 93, 23);        contentPane.add(btnDir);                // 文本框,显示目录        tfDir = new JTextField();        tfDir.setEditable(false);//文本框不可编辑~        tfDir.setBounds(125, 27, 363, 21);        contentPane.add(tfDir);        tfDir.setColumns(10);                // 选择班级 按钮的处理程序        JButton btnClass = new JButton("班级");        btnClass.addActionListener(new ActionListener() {                    public void actionPerformed(ActionEvent e) {            JFileChooser i=new JFileChooser();          i.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置Filechooser          i.showDialog(new JLabel(), "选择班级");        File file=i.getSelectedFile();        tfClass.setText(file.getAbsolutePath());//将路径显示在文本框~             // 获取文件夹下所有的文件        fileArray = file.listFiles();                NUM_IMG = fileArray.length;                                               }         });        btnClass.setBounds(26, 59, 93, 23);        contentPane.add(btnClass);                // 文本框,显示班级文件        tfClass = new JTextField();        tfClass.setEditable(false);//文本框不可编辑~        tfClass.setBounds(125, 60, 363, 21);        contentPane.add(tfClass);        tfClass.setColumns(10);                // 标签,显示带猜测学生姓名        final JLabel lbGuessName = new JLabel("\u59D3\u540D");        lbGuessName.setBounds(259, 91, 102, 23);        contentPane.add(lbGuessName);                // 标签,显示第一个学生相片        final JLabel lblImg1 = new JLabel("NO.1");        lblImg1.addMouseListener(new MouseAdapter () {//添加监听~                    @Override            public void mouseClicked(MouseEvent arg0) {                if(arg0.getSource()==lblImg1){                     if(( lblImg1.getText().equals(lbGuessName.getText()))){                         JOptionPane.showMessageDialog(null,"你猜对了","提示",JOptionPane.PLAIN_MESSAGE);                      }                  else {                      JOptionPane.showMessageDialog(null,"你猜错了!","警告",JOptionPane.WARNING_MESSAGE);                  }                  }            }         });        lblImg1.setBounds(26,155, 150, 200);        contentPane.add(lblImg1);                // 标签,显示第二个学生相片        final JLabel lblImg2 = new JLabel("NO.2");        lblImg2.addMouseListener(new MouseAdapter() {            @Override            public void mouseClicked(MouseEvent arg1) {                if(arg1.getSource()==lblImg2){                 if(( lblImg2.getText().equals(lbGuessName.getText()))){                     JOptionPane.showMessageDialog(null,"你猜对了","提示",JOptionPane.PLAIN_MESSAGE);                      }                  else {                      JOptionPane.showMessageDialog(null,"你猜错了!","警告",JOptionPane.WARNING_MESSAGE);                  }                  }            }        });                lblImg2.setBounds(241,155, 150, 200);        contentPane.add(lblImg2);                // 标签,显示第三个学生相片        final JLabel lblImg3 = new JLabel("NO.3");        lblImg3.addMouseListener(new MouseAdapter() {            @Override            public void mouseClicked(MouseEvent arg2) {                if(arg2.getSource()==lblImg3){                     if(( lblImg3.getText().equals(lbGuessName.getText()))){                          JOptionPane.showMessageDialog(null,"你猜对了","提示",JOptionPane.PLAIN_MESSAGE);                      }                  else {                      JOptionPane.showMessageDialog(null,"你猜错了!","警告",JOptionPane.WARNING_MESSAGE);                  }                  }            }        });        lblImg3.setBounds(434,155, 150, 200);        contentPane.add(lblImg3);                // 再猜一次 按钮,点击则更新相应的三张图片 与 带猜测学生姓名        final JButton btnNext = new JButton("再猜一次");        btnNext.addActionListener(new ActionListener() {//添加监听~            public void actionPerformed(ActionEvent e) {            if(e.getSource()==btnNext){ //如果是next按钮                        //随机数             Random random = new Random();                         //循环三次             ImageIcon icon;//定义icon变量             int p1 = 0,p2 = 0, p3 = 0;             for(int i=0;i<3;i++)             {                index = random.nextInt(NUM_IMG);                    String strTmp = fileArray[index].toString();                    String filename1=fileArray[index].getName();                    try {                                                    icon = new ImageIcon(ImageIO.read(new File(strTmp)));                                                    Image image = icon.getImage(); // 从图表中获取到图片                                                   Image smallImage = image.getScaledInstance(150,200,Image.SCALE_FAST);// 缩放图像                                                 icon = new ImageIcon(smallImage);//把Image文件转化为ImageIcon                                              if(index==NUM_IMG)                        index = 0;                    switch(i)                    {                    case 0:                    lblImg1.setIcon(icon);                    lblImg1.setText(filename1);                    p1 = index;                    break;                    case 1:                    lblImg2.setIcon(icon);                    lblImg2.setText(filename1);                    p2 = index;                    break;case 2:                    lblImg3.setIcon(icon);                    lblImg3.setText(filename1);                    p3 = index;                    break;                    }                    } catch (IOException e1) {                          // TODO Auto-generated catch block                          e1.printStackTrace();            }             }             int []cdf = {p1,p2,p3};//数组~             Random r = new Random();             StringBuffer s1=new StringBuffer();             s1.append(cdf[r.nextInt(2)]);             String filename = s1.toString();//将s1转换为String类型~                          int a = Integer.parseInt(filename);                          String filename1 = fileArray[a].getName();                          lbGuessName.setText(filename1);                         }             }        });                 btnNext.setBounds(223, 400, 93, 23);//再猜一次按钮的位置        contentPane.add(btnNext);             }}


 

0 0
原创粉丝点击