import java.awt.*;
import java.sql.*;
import java.util.*;import javax.swing.*;
import javax.swing.table.*;import conn.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;/**
* <p>Title: 农机软件</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class formLeibie extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JToolBar jToolBar1 = new JToolBar();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JTextField jTextField1 = new JTextField();
JScrollPane jScrollPane1 = new JScrollPane();
DefaultTableModel model=new DefaultTableModel();
//定义JTable的模式
JTable jTable1 = new JTable(model);
//值链表,用于建立对应关系
LinkedList linkID=new LinkedList();
//生成数据库操作类新实列,用于数据库操作
connDB con=new connDB();
//当前操作表
String surTable=new String();
//当前操作代码ID
String curID=new String();
//操作类型
String operType=new String();
public formLeibie() {
try {
jbInit();
fullCode();
} catch (Exception exception) {
exception.printStackTrace();
}
} private void jbInit() throws Exception {
getContentPane().setLayout(borderLayout1);
jButton3.addActionListener(new formLeibie_jButton3_actionAdapter(this));
jButton1.addActionListener(new formLeibie_jButton1_actionAdapter(this));
this.getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH);
jButton2.setText("退出");
jButton3.setText("添加");
jToolBar1.add(jButton3);
jToolBar1.add(jButton1);
jToolBar1.add(jButton2);
jToolBar1.add(jTextField1);
jTextField1.setVisible(false);
this.getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTable1);
jTable1.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e)
{
if (!e.getValueIsAdjusting()) {
String value=(String)jTable1.getValueAt(jTable1.getSelectedRow(),1); //选中行的第一个字段
jTextField1.setText(value);
}
}
}
); jButton1.setText("删除");
this.setSize(284,348);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = getSize();
int x = (screenSize.width - size.width) / 2;
int y = (screenSize.height - size.height) / 2;
setLocation( x, y );
setTitle("农机软件-类别管理");
this.setResizable(false);
this.setVisible(true); }
private void setOperType(String type)
{
operType=type;
}
void fullCode(){
String sql="select * from tab_warestyle";
Vector tempvector;
//清空值链表
linkID.clear();
//清空列表头
model.setColumnCount(0);
//清空结果列表
model.setRowCount(0);
//初始化结果列表表头
model.addColumn("");
model.addColumn("类别");
try
{
//传入查询语句,得到结果集
ResultSet rs=con.getResult(sql);
//判断结果集里是否为空
if(rs.first())
{
int i=0;
//若不为空,移动游标,循环加载数据
rs.beforeFirst();
while(rs.next())
{
tempvector=new Vector(1,1);
tempvector.add(i=i+1);
linkID.add(i);
tempvector.add(rs.getString("Style"));
model.addRow(tempvector);
}
model.fireTableDataChanged();
}
con.close();
}
catch(Exception ex){
ex.printStackTrace();
}
setOperType("none");
} /**
* setOperType
*
* @param string String
*/
public static void main(String[] args) {
formLeibie formleibie = new formLeibie();
} public void jButton3_actionPerformed(ActionEvent e) {
formLeibieAdd forl=new formLeibieAdd();
this.dispose();
} public void jButton1_actionPerformed(ActionEvent e) {
Object[] options = {"确定", "退出"};
if (JOptionPane.showOptionDialog(null, "您是否真的要删除类别信息", "农机软件",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE,
new
ImageIcon("/jbproject/nongji/image/24.gif"),
options, options[0]) == 0)
{
String sql="select * from tab_wareinif where Style='" + jTextField1.getText().trim() + "'"; //查询商品表中是否有此类别的记录
String sql1="delete from tab_warestyle where Style='" + jTextField1.getText().trim() + "'";//删除语句
ResultSet rs=con.getResult(sql);
try
{
if (rs.first())
{
JOptionPane.showMessageDialog(null, "商品表中还有此类别的记录,不能删除", "农机软件",
JOptionPane.WARNING_MESSAGE,
new
ImageIcon(
"/jbproject/nongji/image/24.gif"));
}
else
{
if(con.executeSql(sql1))
{
JOptionPane.showMessageDialog(null, "删除类别成功", "农机软件",
JOptionPane.WARNING_MESSAGE,
new
ImageIcon("/jbproject/nongji/image/24.gif"));
con.close();
fullCode();
}
else
{
JOptionPane.showMessageDialog(null, "删除失败", "农机软件",
JOptionPane.WARNING_MESSAGE,
new
ImageIcon("/jbproject/nongji/image/24.gif")); } }
}
catch(Exception ex){}
}
else
{
return;
}
}
}class formLeibie_jButton1_actionAdapter implements ActionListener {
private formLeibie adaptee;
formLeibie_jButton1_actionAdapter(formLeibie adaptee) {
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class formLeibie_jButton3_actionAdapter implements ActionListener {
private formLeibie adaptee;
formLeibie_jButton3_actionAdapter(formLeibie adaptee) {
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
import java.sql.*;
import java.util.*;import javax.swing.*;
import javax.swing.table.*;import conn.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;/**
* <p>Title: 农机软件</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class formLeibie extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JToolBar jToolBar1 = new JToolBar();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JTextField jTextField1 = new JTextField();
JScrollPane jScrollPane1 = new JScrollPane();
DefaultTableModel model=new DefaultTableModel();
//定义JTable的模式
JTable jTable1 = new JTable(model);
//值链表,用于建立对应关系
LinkedList linkID=new LinkedList();
//生成数据库操作类新实列,用于数据库操作
connDB con=new connDB();
//当前操作表
String surTable=new String();
//当前操作代码ID
String curID=new String();
//操作类型
String operType=new String();
public formLeibie() {
try {
jbInit();
fullCode();
} catch (Exception exception) {
exception.printStackTrace();
}
} private void jbInit() throws Exception {
getContentPane().setLayout(borderLayout1);
jButton3.addActionListener(new formLeibie_jButton3_actionAdapter(this));
jButton1.addActionListener(new formLeibie_jButton1_actionAdapter(this));
this.getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH);
jButton2.setText("退出");
jButton3.setText("添加");
jToolBar1.add(jButton3);
jToolBar1.add(jButton1);
jToolBar1.add(jButton2);
jToolBar1.add(jTextField1);
jTextField1.setVisible(false);
this.getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTable1);
jTable1.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e)
{
if (!e.getValueIsAdjusting()) {
String value=(String)jTable1.getValueAt(jTable1.getSelectedRow(),1); //选中行的第一个字段
jTextField1.setText(value);
}
}
}
); jButton1.setText("删除");
this.setSize(284,348);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = getSize();
int x = (screenSize.width - size.width) / 2;
int y = (screenSize.height - size.height) / 2;
setLocation( x, y );
setTitle("农机软件-类别管理");
this.setResizable(false);
this.setVisible(true); }
private void setOperType(String type)
{
operType=type;
}
void fullCode(){
String sql="select * from tab_warestyle";
Vector tempvector;
//清空值链表
linkID.clear();
//清空列表头
model.setColumnCount(0);
//清空结果列表
model.setRowCount(0);
//初始化结果列表表头
model.addColumn("");
model.addColumn("类别");
try
{
//传入查询语句,得到结果集
ResultSet rs=con.getResult(sql);
//判断结果集里是否为空
if(rs.first())
{
int i=0;
//若不为空,移动游标,循环加载数据
rs.beforeFirst();
while(rs.next())
{
tempvector=new Vector(1,1);
tempvector.add(i=i+1);
linkID.add(i);
tempvector.add(rs.getString("Style"));
model.addRow(tempvector);
}
model.fireTableDataChanged();
}
con.close();
}
catch(Exception ex){
ex.printStackTrace();
}
setOperType("none");
} /**
* setOperType
*
* @param string String
*/
public static void main(String[] args) {
formLeibie formleibie = new formLeibie();
} public void jButton3_actionPerformed(ActionEvent e) {
formLeibieAdd forl=new formLeibieAdd();
this.dispose();
} public void jButton1_actionPerformed(ActionEvent e) {
Object[] options = {"确定", "退出"};
if (JOptionPane.showOptionDialog(null, "您是否真的要删除类别信息", "农机软件",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE,
new
ImageIcon("/jbproject/nongji/image/24.gif"),
options, options[0]) == 0)
{
String sql="select * from tab_wareinif where Style='" + jTextField1.getText().trim() + "'"; //查询商品表中是否有此类别的记录
String sql1="delete from tab_warestyle where Style='" + jTextField1.getText().trim() + "'";//删除语句
ResultSet rs=con.getResult(sql);
try
{
if (rs.first())
{
JOptionPane.showMessageDialog(null, "商品表中还有此类别的记录,不能删除", "农机软件",
JOptionPane.WARNING_MESSAGE,
new
ImageIcon(
"/jbproject/nongji/image/24.gif"));
}
else
{
if(con.executeSql(sql1))
{
JOptionPane.showMessageDialog(null, "删除类别成功", "农机软件",
JOptionPane.WARNING_MESSAGE,
new
ImageIcon("/jbproject/nongji/image/24.gif"));
con.close();
fullCode();
}
else
{
JOptionPane.showMessageDialog(null, "删除失败", "农机软件",
JOptionPane.WARNING_MESSAGE,
new
ImageIcon("/jbproject/nongji/image/24.gif")); } }
}
catch(Exception ex){}
}
else
{
return;
}
}
}class formLeibie_jButton1_actionAdapter implements ActionListener {
private formLeibie adaptee;
formLeibie_jButton1_actionAdapter(formLeibie adaptee) {
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class formLeibie_jButton3_actionAdapter implements ActionListener {
private formLeibie adaptee;
formLeibie_jButton3_actionAdapter(formLeibie adaptee) {
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
如果还要操作 再调用再调用 first()方法使游标返回到第1行前面.
1.注释首先就不规范。
2.变量命名都看不出是什么意思,什么jButton1,jButton2等,谁知道是啥。
3.画面显示项目,message,text等都属于硬编码,将来不好维护。
4.JOptionPane.showMessageDialog啥的,系统的提示消息本来也就那么几种(消息,警告,错误),干吗不封装一下,以至于将来想换个图片都得一个个的修改,将来如何维护。
5.画面显示,业务逻辑,数据库操作,全部都在画面上,基本的层次结构都没有,业务复用,代码复用,都没有考虑,起码也要考虑考虑MVC结构吧。
6.Exception压根就没有处理,直接printStackTrace(); 给谁看啊?甚至都有catch(Exception ex){} ,发生错误也不知道。
7.数据库的操作也就那么几种逻辑,封装封装吧,剩下的不同就是SQL语句加参数,还有SQL啥的最好不要出现在程序中,统一管理也好维护吧。
8.应该多考虑考虑代码的复用,像这种简单的MIS系统,Table的数据增删改分页啥的基本功能,完全可以考虑封装一下JTable ,实现对数据的控制,相应的增删改都可以直接封装,这样岂不是每个画面都是简单设置设置就完成功能了么?质量也高啊
9.针对一个系统而言,设计的时候画面应该也没有太多的风格吧,JFrame 完全可以封装成几大类,通用的属相,功能都可以封装,将来换风格,也容易啊,除此之外,系统中还有很多类似的功能,都可以提取的,哪怕是一个个小小的下拉列表框都可以在设计中考虑到复用的。看看代码,就忍不住说几句,批判得不对的地方,别生气哈
从数据库中全部取出
TableModel defaultTableModel = new DefaultTableModel(表中的数据, 表头);
表.setModel(defaultTableModel);这样就可以更改表中数据拉