package view;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import main.MySql;
public class GInfoPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 9111529040219964746L;
private MySql mySql;
private String lastSql;
private ResultSet rs;
private Vector<String> vecColumns;
private Vector<String> vecRow;
private Vector<Vector<String>> vecData;
private DefaultTableModel tableModel;
private JFrame master;
private int width, height;
private int tabState;// 表格状态 1=学生-课程-成绩表 2=按系别统计成绩 3=按系对学生成绩排名
JLabel lblRes;
private String lblString = "SQL语句:";
// "<html>" + lblString + lastSql + "</html>"
private JTextField tfSno, tfSname, tfSdept, tfCno, tfCname, tfGrade;
private JButton btnInsert, btnSelect, btnSdept, btnOrder;
private JTable tbRes;
public GInfoPanel(MainWindow master) {
this.master = master;
mySql = master.getMySql();
vecData = new Vector<>();
width = master.getWidth();
height = (int) (0.95 * master.getHeight());
setBounds(0, (int) (0.05 * master.getHeight()), width, height);
// setBackground(Color.green);
setLayout(null);
addTextFields();
addButtons();
addTable();
tabState = 1;
setVisible(false);
}
private void setRelLocation(Container con, double relx, double rely, double relwidth, double relheight) {
con.setBounds((int) (relx * width), (int) (rely * height), (int) (relwidth * width),
(int) (relheight * height));
}
private void addTextFields() {
JLabel lblSno = new JLabel("学号", JLabel.CENTER);
JLabel lblSname = new JLabel("姓名", JLabel.CENTER);
JLabel lblSdept = new JLabel("系别", JLabel.CENTER);
JLabel lblCno = new JLabel("课程号", JLabel.CENTER);
JLabel lblCname = new JLabel("课程名", JLabel.CENTER);
JLabel lblGrade = new JLabel("成绩", JLabel.CENTER);
Font f = new Font("宋体", Font.PLAIN, 16);
lblSno.setFont(f);
lblSname.setFont(f);
lblSdept.setFont(f);
lblCno.setFont(f);
lblCname.setFont(f);
lblGrade.setFont(f);
setRelLocation(lblSno, 0.00, 0.05, 0.10, 0.03);
setRelLocation(lblSname, 0.10, 0.05, 0.10, 0.03);
setRelLocation(lblSdept, 0.20, 0.05, 0.10, 0.03);
setRelLocation(lblCno, 0.30, 0.05, 0.10, 0.03);
setRelLocation(lblCname, 0.40, 0.05, 0.10, 0.03);
setRelLocation(lblGrade, 0.5, 0.05, 0.10, 0.03);
add(lblSno);
add(lblSname);
add(lblCno);
add(lblCname);
add(lblSdept);
add(lblGrade);
tfSno = new JTextField();
tfSname = new JTextField();
tfCno = new JTextField();
tfCname = new JTextField();
tfSdept = new JTextField();
tfGrade = new JTextField();
tfSno.setFont(f);
tfSname.setFont(f);
tfCno.setFont(f);
tfCname.setFont(f);
tfSdept.setFont(f);
tfGrade.setFont(f);
setRelLocation(tfSno, 0.00, 0.08, 0.10, 0.05);
setRelLocation(tfSname, 0.10, 0.08, 0.10, 0.05);
setRelLocation(tfSdept, 0.20, 0.08, 0.10, 0.05);
setRelLocation(tfCno, 0.30, 0.08, 0.10, 0.05);
setRelLocation(tfCname, 0.40, 0.08, 0.10, 0.05);
setRelLocation(tfGrade, 0.5, 0.08, 0.10, 0.05);
add(tfSno);
add(tfSname);
add(tfCno);
add(tfCname);
add(tfSdept);
add(tfGrade);
}
private void addButtons() {
btnInsert = new JButton("插入");
btnSelect = new JButton("查询");
btnSdept = new JButton("统计");
btnOrder = new JButton("成绩排序");
setRelLocation(btnInsert, 0.6, 0.08, 0.1, 0.05);
setRelLocation(btnSelect, 0.7, 0.08, 0.1, 0.05);
setRelLocation(btnSdept, 0.8, 0.08, 0.1, 0.05);
setRelLocation(btnOrder, 0.9, 0.08, 0.1, 0.05);
add(btnInsert);
add(btnSdept);
add(btnOrder);
add(btnSelect);
btnSelect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
actionBtnSelect();
}
});
btnInsert.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
actionBtnInsert();
}
});
btnSdept.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
actionBtnSdept();
}
});
btnOrder.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
actionBtnOrder();
}
});
}
private void addTable() {
tabState = 1;
Font font = new Font("宋体", Font.PLAIN, 16);
lblRes = new JLabel(lblString);
lblRes.setFont(new Font("宋体", Font.BOLD, 20));
setRelLocation(lblRes, 0.05, 0.15, 0.9, 0.1);
add(lblRes);
vecColumns = new Vector<>();
vecColumns.add("学号");
vecColumns.add("姓名");
vecColumns.add("课程号");
vecColumns.add("课程名");
vecColumns.add("分数");
lastSql = "select a.sno,a.sname,b.cno,b.cname,c.grade from student a ,course b,sc c where a.sno=c.sno and b.cno=c.cno";
try {
rs = mySql.select(lastSql);
lblRes.setText("<html>" + lblString + lastSql + "</html>");
} catch (SQLException e2) {
// TODO 自动生成的 catch 块
e2.printStackTrace();
JOptionPane.showMessageDialog(this, "表格初始化时sql语句执行错误\n" + e2.getMessage());
rs = null;
}
try {
while (rs.next()) {
vecRow = new Vector<>();
vecRow.add(rs.getString("sno"));
vecRow.add(rs.getString("sname"));
vecRow.add(rs.getString("cno"));
vecRow.add(rs.getString("cname"));
vecRow.add(rs.getString("grade"));
vecData.add(vecRow);
}
rs.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
tableModel = new DefaultTableModel(vecData, vecColumns);
tbRes = new JTable(tableModel);
tbRes.setRowHeight(30);
tbRes.setFont(font);
tableModel.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
// TODO 自动生成的方法存根
if (tabState == 1) {
tableChanged1(e);
}
}
});
JScrollPane spRes = new JScrollPane(tbRes);
setRelLocation(spRes, 0.02, 0.25, 0.96, 0.7);
add(spRes);
}
/**
* 在学生-课程-成绩表中用
*
* @param e
*/
private void tableChanged1(TableModelEvent e) {
try {
rs = mySql.select(lastSql);
} catch (SQLException e2) {
// TODO 自动生成的 catch 块
e2.printStackTrace();
JOptionPane.showMessageDialog(null, "更新前sql语句执行错误\n" + lastSql);
rs = null;
return;
}
if (e.getFirstRow() != -1) {
try {
rs.absolute(e.getFirstRow() + 1);
String oldVal = rs.getString(e.getColumn() + 1);
if (e.getColumn() != 4) {
// tbRes.setValueAt(oldVal, e.getFirstRow(), e.getColumn());
JOptionPane.showMessageDialog(master, "该结果只能修改分数");
// JOptionPane.showConfirmDialog(master, "该结果只能修改分数", "注意!",
// JOptionPane.CANCEL_OPTION);
updateTable1(mySql.select(lastSql));
return;
}
String newVal = (String) tbRes.getValueAt(e.getFirstRow(), e.getColumn());
if (!oldVal.equals(newVal)) {
int r = JOptionPane.showConfirmDialog(master, "确定把“" + oldVal + "”改为“" + newVal + "”吗?", "注意!",
JOptionPane.Y
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MySQL_Test.zip (31个子文件)
MySQL_Test
bin
view
SInfoPanel$1.class 665B
GInfoPanel$4.class 665B
CInfoPanel$4.class 3KB
GInfoPanel$2.class 665B
CInfoPanel$2.class 665B
CInfoPanel.class 9KB
MainWindow$2.class 961B
MainWindow.class 3KB
GInfoPanel$1.class 665B
SInfoPanel.class 9KB
CInfoPanel$3.class 918B
SInfoPanel$2.class 665B
GInfoPanel.class 13KB
CInfoPanel$1.class 665B
MainWindow$1.class 961B
GInfoPanel$3.class 665B
MainWindow$3.class 961B
GInfoPanel$5.class 824B
SInfoPanel$3.class 3KB
main
MySql.class 2KB
Main.class 3KB
.settings
org.eclipse.jdt.core.prefs 598B
src
view
SInfoPanel.java 11KB
MainWindow.java 3KB
GInfoPanel.java 16KB
CInfoPanel.java 10KB
main
MySql.java 2KB
Main.java 2KB
.project 386B
.classpath 406B
lib
mysql-connector-java-8.0.16.jar 2.19MB
共 31 条
- 1
资源评论
问君还有几多发
- 粉丝: 48
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功