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

📄 add.java

📁 人类,不同人有不同的职业,通过吃套餐来增加能量,通过做运动来减少能量
💻 JAVA
字号:
package com.person;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.sql.*;
import java.io.*;

class Add implements ActionListener, ItemListener {
	static int hit = 0;// 用来判断"添加"对话框是否被关闭

	/**
	 * 定义与人有关的变量,其中ID为该人的id号,sleeptime为睡觉时间
	 * amusementtime为娱乐时间,worktime为工作时间,windex为所选季节的下标
	 * food为食物的名称,picturename为图片的名称,seasonname为季节的名称
	 */
	int ID, sleeptime, amusementtime, worktime, windex = 0;

	String food, picturename = "", seasonname;

	/**
	 * 定义内部窗体internalframe
	 */
	JInternalFrame internalframe;

	/**
	 * 定义文件过滤,分别代表以.jpg,.gif和两者的结合为后缀的文件
	 */
	ExampleFileFilter jpgFilter, gifFilter, bothFilter;

	/**
	 * 定义文件选择对话框,并以当前目录显示
	 */
	JFileChooser filechooser = new JFileChooser(new File("."));

	/**
	 * 定义季节
	 */
	String s[] = { "春天", "夏天", "秋天", "冬天" };

	/**
	 * 定义所要用到的相关容器
	 */
	JPanel panel = new JPanel();

	JPanel panel1 = new JPanel();

	JPanel panel2 = new JPanel();

	JPanel panel3 = new JPanel();

	JPanel panel4 = new JPanel();

	JPanel panel5 = new JPanel();

	JPanel panel6 = new JPanel();

	JPanel panel7 = new JPanel();

	/**
	 * 定义容器的相关组件
	 */
	JLabel sleep_time = new JLabel("请输入睡觉时间:");

	JLabel amusement_time = new JLabel("请输入娱乐时间:");

	JLabel work_time = new JLabel("请输入工作时间:");

	JLabel food_name = new JLabel("请输入食物名称:");

	JLabel food_picture = new JLabel("请选择食物的图片:");

	JLabel food_picture_show = new JLabel();

	JLabel season = new JLabel("请选择季节:");

	JTextField sleep_time_context = new JTextField(10);

	JTextField amusement_time_context = new JTextField(10);

	JTextField work_time_context = new JTextField(10);

	JTextField food_name_context = new JTextField(10);

	JButton food_picture_context = new JButton("选择图片...");

	JComboBox season_context = new JComboBox(s);

	JButton confirm = new JButton("确定");

	JButton cancel = new JButton("取消");

	/**
	 * 以下为设置窗体中各组件的相关属性及容器的布局等
	 */
	Add() {
		hit++;
		if (hit == 1) {
			internalframe = new JInternalFrame("添加", true, true, false, true);
			internalframe.setFrameIcon(new ImageIcon("images/add_title.gif"));
			internalframe.setLocation(200, 100);
			internalframe.setSize(350, 370);
			internalframe.setVisible(true);
			internalframe.setResizable(false);
			internalframe.addInternalFrameListener(new WinLis());
			final Container cp = internalframe.getContentPane();
			cp.setLayout(new BorderLayout());
			jpgFilter = new ExampleFileFilter("jpg",
					"JPEG Compressed Image Files");
			gifFilter = new ExampleFileFilter("gif", "GIF Image Files");
			bothFilter = new ExampleFileFilter(new String[] { "jpg", "gif" },
					"JPEG and GIF Image Files");
			filechooser.addChoosableFileFilter(jpgFilter);
			filechooser.addChoosableFileFilter(gifFilter);
			filechooser.addChoosableFileFilter(bothFilter);
			panel1.setLayout(new GridLayout(1, 2));
			panel1.setBackground(new Color(240, 248, 255));
			Box vBox = Box.createVerticalBox();
			vBox.add(Box.createVerticalStrut(5));
			sleep_time.setForeground(Color.BLUE);
			vBox.add(sleep_time);
			vBox.add(Box.createVerticalStrut(10));
			amusement_time.setForeground(Color.BLUE);
			vBox.add(amusement_time);
			vBox.add(Box.createVerticalStrut(10));
			work_time.setForeground(Color.BLUE);
			vBox.add(work_time);
			vBox.add(Box.createVerticalStrut(10));
			food_name.setForeground(Color.BLUE);
			vBox.add(food_name);
			vBox.add(Box.createVerticalStrut(10));
			food_picture.setForeground(Color.BLUE);
			vBox.add(food_picture);
			vBox.add(Box.createVerticalStrut(15));
			season.setForeground(Color.BLUE);
			vBox.add(season);
			panel1.add(vBox);
			Box vBox1 = Box.createVerticalBox();
			vBox1.add(Box.createVerticalStrut(5));
			sleep_time_context.setForeground(Color.RED);
			sleep_time_context.setBorder(BorderFactory
					.createLoweredBevelBorder());
			vBox1.add(sleep_time_context);
			vBox1.add(Box.createVerticalStrut(5));
			amusement_time_context.setForeground(Color.RED);
			amusement_time_context.setBorder(BorderFactory
					.createLoweredBevelBorder());
			vBox1.add(amusement_time_context);
			vBox1.add(Box.createVerticalStrut(5));
			work_time_context.setForeground(Color.RED);
			work_time_context.setBorder(BorderFactory
					.createLoweredBevelBorder());
			vBox1.add(work_time_context);
			vBox1.add(Box.createVerticalStrut(5));
			food_name_context.setForeground(Color.RED);
			food_name_context.setBorder(BorderFactory
					.createLoweredBevelBorder());
			vBox1.add(food_name_context);
			vBox1.add(Box.createVerticalStrut(5));
			vBox1.add(food_picture_context);
			vBox1.add(Box.createVerticalStrut(5));
			vBox1.add(season_context);
			vBox1.add(Box.createVerticalStrut(5));
			panel1.add(vBox1);
			panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory
					.createEtchedBorder(), "相关信息",
					TitledBorder.DEFAULT_JUSTIFICATION,
					TitledBorder.DEFAULT_POSITION, null, Color.RED));
			panel.setBackground(new Color(240, 248, 255));
			panel.add(panel1);
			cp.add(panel, BorderLayout.NORTH);
			panel3.setLayout(new GridLayout(1, 2, 5, 5));
			panel3.setBackground(new Color(240, 248, 255));
			panel4.setBorder(BorderFactory.createEtchedBorder());
			panel4.setBackground(new Color(240, 248, 255));
			food_picture_show.setPreferredSize(new Dimension(100, 90));
			panel4.add(food_picture_show);
			panel3.add(panel4);
			panel5.setBorder(BorderFactory.createEtchedBorder());
			panel5.setLayout(new GridLayout(2, 1));
			panel5.setBackground(new Color(240, 248, 255));
			confirm.setPreferredSize(new Dimension(100, 30));
			panel6.setBackground(new Color(240, 248, 255));
			panel6.add(confirm);
			panel5.add(panel6);
			cancel.setPreferredSize(new Dimension(100, 30));
			panel7.setBackground(new Color(240, 248, 255));
			panel7.add(cancel);
			panel5.add(panel7);
			panel3.add(panel5);
			panel2.add(panel3);
			panel2.setBackground(new Color(240, 248, 255));
			cp.add(panel2, BorderLayout.CENTER);
			Person.desktopPane.add(internalframe);
			try {
				internalframe.setSelected(true);
			} catch (java.beans.PropertyVetoException e) {
				System.out.println("PropertyVetoException:" + e.getMessage());
			}
		} else {
		}
		season_context.addItemListener(this);
		food_picture_context.addActionListener(this);
		confirm.addActionListener(this);
		cancel.addActionListener(this);
	}

	@SuppressWarnings("static-access")
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == food_picture_context) {
			filechooser.setDialogType(JFileChooser.OPEN_DIALOG);
			int select = filechooser.showOpenDialog(internalframe);
			if (select == filechooser.APPROVE_OPTION) {
				File file = filechooser.getSelectedFile();
				picturename = file.getAbsolutePath().toString();
				if (picturename.endsWith(".gif")
						|| picturename.endsWith(".jpg")) {
					food_picture_show.setHorizontalAlignment(JLabel.CENTER);
					food_picture_show.setVerticalAlignment(JLabel.CENTER);
					food_picture_show.setIcon(new ImageIcon(picturename));
				} else {
					JOptionPane.showMessageDialog(filechooser,
							"选择的文件格式不正确,请重新选择", "错误信息",
							JOptionPane.WARNING_MESSAGE);
					food_picture_show.setIcon(null);
					picturename = "";
				}
			} else if (select == filechooser.CANCEL_OPTION)
				filechooser.setOpaque(true);
		}
		if (e.getSource() == confirm) {
			System.out.println(Select.energy);
			if (sleep() && play() && work() && isfoodname() && isPicturename()) {
				sleeptime = Integer.parseInt(sleep_time_context.getText());
				amusementtime = Integer.parseInt(amusement_time_context
						.getText());
				worktime = Integer.parseInt(work_time_context.getText());
				food = food_name_context.getText();
				seasonname = s[windex];
				if (sleeptime > 1500 || sleeptime < 0)
					JOptionPane
							.showMessageDialog(internalframe, "睡觉时间输入的值超出范围",
									"错误信息", JOptionPane.WARNING_MESSAGE);
				else if (amusementtime > 500 || amusementtime < 0)
					JOptionPane
							.showMessageDialog(internalframe, "娱乐时间输入的值超出范围",
									"错误信息", JOptionPane.WARNING_MESSAGE);
				else if (worktime < 0 || Select.energy - worktime * 0.1 < 10)
					JOptionPane
							.showMessageDialog(internalframe, "工作时间输入的值超出范围",
									"错误信息", JOptionPane.WARNING_MESSAGE);
				else {
					String JDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
					String conURL = "jdbc:odbc:TestDB";
					try {
						Class.forName(JDriver);
					} catch (java.lang.ClassNotFoundException e1) {
						System.out.println("ForName:" + e1.getMessage());
					}
					try {
						Connection con = DriverManager.getConnection(conURL);
						Statement s = con.createStatement(
								ResultSet.TYPE_SCROLL_INSENSITIVE,
								ResultSet.CONCUR_UPDATABLE);
						PreparedStatement ps = con
								.prepareStatement("insert into person values(?,?,?,?,?,?,?)");
						ResultSet rs = s.executeQuery("select * from person");
						while (rs.next()) {
							if (rs.isLast()) {
								ID = rs.getInt("id");
							}
						}
						ID++;
						ps.setInt(1, ID);
						ps.setInt(2, sleeptime);
						ps.setInt(3, amusementtime);
						ps.setInt(4, worktime);
						ps.setString(5, food);
						ps.setString(6, picturename);
						ps.setString(7, seasonname);
						ps.executeUpdate();
						ps.close();
						s.close();
						con.close();
						internalframe.dispose();
					} catch (SQLException e1) {
						System.out.println("SQLException:" + e1.getMessage());
					}
				}
			}
		}
		if (e.getSource() == cancel)
			internalframe.dispose();
	}

	/*
	 * 以下为得到用户所选的季节
	 */
	public void itemStateChanged(ItemEvent e) {
		if (e.getSource() == season_context) {
			String str = (String) e.getItem();
			for (int i = 0; i < s.length; i++)
				if (str == s[i])
					windex = season_context.getSelectedIndex();
		}
	}

	/**
	 * 以下代码判断用户输入的睡觉时间是否为空或不是数字等非法字符
	 */
	public boolean sleep() {
		if (sleep_time_context.getText().equals("")) {
			JOptionPane.showMessageDialog(internalframe, "睡觉时间不能为空", "错误信息",
					JOptionPane.WARNING_MESSAGE);
			return false;
		}
		byte[] tempbyte = sleep_time_context.getText().getBytes();
		for (int i = 0; i < sleep_time_context.getText().length(); i++) {
			if ((tempbyte[i] < 48) || (tempbyte[i] > 57)) {
				JOptionPane.showMessageDialog(internalframe, "睡觉时间输入的值不合法",
						"错误信息", JOptionPane.WARNING_MESSAGE);
				return false;
			}
		}
		return true;
	}

	/**
	 * 以下代码判断用户输入的娱乐时间是否为空或不是数字等非法字符
	 */
	public boolean play() {
		if (amusement_time_context.getText().equals("")) {
			JOptionPane.showMessageDialog(internalframe, "娱乐时间不能为空", "错误信息",
					JOptionPane.WARNING_MESSAGE);
			return false;
		}
		byte[] tempbyte = amusement_time_context.getText().getBytes();
		for (int i = 0; i < amusement_time_context.getText().length(); i++) {
			if ((tempbyte[i] < 48) || (tempbyte[i] > 57)) {
				JOptionPane.showMessageDialog(internalframe, "娱乐时间输入的值不合法",
						"错误信息", JOptionPane.WARNING_MESSAGE);
				return false;
			}
		}
		return true;
	}

	/**
	 * 以下代码判断用户输入的工作时间是否为空或不是数字等非法字符
	 */
	public boolean work() {
		if (work_time_context.getText().equals("")) {
			JOptionPane.showMessageDialog(internalframe, "工作时间不能为空", "错误信息",
					JOptionPane.WARNING_MESSAGE);
			return false;
		}
		byte[] tempbyte = work_time_context.getText().getBytes();
		for (int i = 0; i < work_time_context.getText().length(); i++) {
			if ((tempbyte[i] < 48) || (tempbyte[i] > 57)) {
				JOptionPane.showMessageDialog(internalframe, "工作时间输入的值不合法",
						"错误信息", JOptionPane.WARNING_MESSAGE);
				return false;
			}
		}
		return true;
	}

	/**
	 * 以下代码判断用户输入的食物名称是否为空
	 */
	public boolean isfoodname() {
		if (food_name_context.getText().equals("")) {
			JOptionPane.showMessageDialog(internalframe, "食物名称不能为空", "错误信息",
					JOptionPane.WARNING_MESSAGE);
			return false;
		}
		return true;
	}

	/**
	 * 以下代码判断用户输入的图片名称是否为空
	 */
	public boolean isPicturename() {
		if (picturename.equals("")) {
			JOptionPane.showMessageDialog(internalframe, "图片不能为空", "错误信息",
					JOptionPane.WARNING_MESSAGE);
			return false;
		}
		return true;
	}

	/**
	 * 为内部窗体添加的监听者,当用户关闭了内部窗体后,hit的值变为0
	 * 
	 */
	class WinLis extends InternalFrameAdapter {
		public void internalFrameClosed(InternalFrameEvent e) {
			hit = 0;
		}
	}
}

⌨️ 快捷键说明

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