📄 add.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 + -