17周实验第一天

来源:互联网 发布:健康体检软件系统 编辑:程序博客网 时间:2024/05/21 14:49
项目一:随机相片显示。
目的:了解随机数的生成,及图片的显示。
目标:
(1)在已有代码的基础上,完成随机(或 顺序)显示三张图片的功能。
(2)当猜测准确,或错误时,弹出对话框进行回应。
需要达到的效果




代码
import java.awt.Color;import java.awt.EventQueue;import java.awt.GridLayout;import java.awt.SystemColor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;public class Guess01 extends JFrame {/** *  */private static final long serialVersionUID = 1L;private JPanel contentPane;private JTextField tfDir;private JTextField tfClass;File[] fileArray;   // +文件夹下所有文件int NUM_IMG = 0;    // +文件总数目int index   = 0; String strPath = "";    //+文件夹路径String strFileName = "";    //+文件名称JLabel jlbImg = null;/** * Launch the application. */public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {Guess01 frame = new Guess01();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/** * Create the frame. */public Guess01() {setTitle("\u731C\u731C\u770B\u6E38\u620FV0.1");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 645, 409);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);// +添加显示Image的JLabel控件jlbImg = new JLabel();jlbImg.setBackground(Color.RED);jlbImg.setBounds(100, 100, 200, 200);this.add(jlbImg);// 选择目录 按钮的处理程序final JButton btnDir = new JButton("\u9009\u62E9\u76EE\u5F55");btnDir.addActionListener(new ActionListener() {private Object btnGuessAgain;public void actionPerformed(ActionEvent e) {if(e.getSource()==btnDir ){    //如果是open按钮JFileChooser jfc=new JFileChooser();//jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);jfc.showDialog(new JLabel(), "选择");File file=jfc.getSelectedFile();if(file.isDirectory()){System.out.println("文件夹:"+file.getAbsolutePath());}else if(file.isFile()){System.out.println("文件:"+file.getAbsolutePath());}System.out.println(jfc.getSelectedFile().getName());// 把文件路径显示在文本框中tfDir.setText(file.getAbsolutePath());//jlbImg.setIcon(new ImageIcon(file.getAbsolutePath()));// 获取文件路径 与文件名strPath = file.getAbsolutePath();strFileName = jfc.getSelectedFile().getName();if(file!=null && file.isDirectory()){// 参考: java中File.listFiles(FileFilter) FileFilter的使用 //  http://zhouzaibao.iteye.com/blog/347557 ;// 获取文件夹下所有的文件fileArray = file.listFiles();NUM_IMG = fileArray.length;}}if(e.getSource()==btnGuessAgain){ //如果是next按钮String strTmp = fileArray[index].toString();index++;if(index==NUM_IMG)index = 0;jlbImg.setIcon(new ImageIcon(strTmp));}  }});btnDir.setBounds(26, 26, 93, 23);contentPane.add(btnDir);//随机图片生成jlbImg.setLayout(new GridLayout(3, 3));jlbImg .setSize(200, 200);jlbImg .setVisible(true);//jlbImg .setDefaultCloseOperation(jlbImg.EXIT_ON_CLOSE);JLabel[] labels = new JLabel[100];for (int i = 0; i < 100; i++) {labels[i] = new JLabel();jlbImg .add(labels[i]);int num = ((int) (Math.random() * 3));if (num == 0) {labels[i].setIcon(new ImageIcon("X.jpg"));}else if (num == 1) {labels[i].setIcon(new ImageIcon("0.jpg"));}}// 文本框,显示目录tfDir = new JTextField();tfDir.setEditable(false);tfDir.setBounds(125, 27, 363, 21);contentPane.add(tfDir);tfDir.setColumns(10);// 选择班级 按钮的处理程序final JButton btnClass = new JButton("\u9009\u62E9\u73ED\u7EA7");btnClass.addActionListener(new ActionListener() {private Object btnGuessAgain;public void actionPerformed(ActionEvent e) {if(e.getSource()==btnClass){    //如果是open按钮JFileChooser jfc=new JFileChooser();//jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );//jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);jfc.setFileSelectionMode(JFileChooser.FILES_ONLY); File file=jfc.getSelectedFile();jfc.showDialog(new JLabel(), "选择");if(file.isDirectory()){System.out.println("文件夹:"+file.getAbsolutePath());}else if(file.isFile()){System.out.println("文件:"+file.getAbsolutePath());}System.out.println(jfc.getSelectedFile().getName());// 把文件路径显示在文本框中tfClass.setText(file.getAbsolutePath());//jlbImg.setIcon(new ImageIcon(file.getAbsolutePath()));// 获取文件路径 与文件名strPath = file.getAbsolutePath();strFileName = jfc.getSelectedFile().getName();//if(file!=null && file.istxt()){if (file.getName().endsWith(".txt")){// 参考: java中File.listFiles(FileFilter) FileFilter的使用 //  http://zhouzaibao.iteye.com/blog/347557 ;}//获取文件夹下所有的文件fileArray = file.listFiles();NUM_IMG = fileArray.length;}if(e.getSource()==btnGuessAgain){ //如果是next按钮String strTmp = fileArray[index].toString();index++;if(index==NUM_IMG)index = 0;jlbImg .setIcon(new ImageIcon(strTmp));}  }});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);// 标签,显示带猜测学生姓名JLabel lbGuessName = new JLabel("\u59D3\u540D");lbGuessName.setBounds(259, 91, 102, 23);contentPane.add(lbGuessName);// 标签,显示第一个学生相片JLabel lblImg1 = new JLabel("\u56FE\u72471");lblImg1.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {}});lblImg1.setBounds(26, 151, 183, 178);contentPane.add(lblImg1);// 标签,显示第二个学生相片JLabel lblImg2 = new JLabel("\u56FE\u72472");lblImg2.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {}});lblImg2.setForeground(Color.BLACK);lblImg2.setBackground(SystemColor.inactiveCaption);lblImg2.setBounds(241, 155, 183, 172);contentPane.add(lblImg2);// 标签,显示第三个学生相片JLabel lblImg3 = new JLabel("\u56FE\u72473");lblImg3.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {}});lblImg3.setBounds(430, 155, 185, 172);contentPane.add(lblImg3);// 再猜一次 按钮,点击则更新相应的三张图片 与 带猜测学生姓名JButton btnGuessAgain = new JButton("\u518D\u731C\u4E00\u6B21");btnGuessAgain.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {}});btnGuessAgain.setBounds(223, 337, 93, 23);contentPane.add(btnGuessAgain);}}



只达到此效果
还不能显示三张图片
0 0
原创粉丝点击