猿问

JAVA中图形面板显示数据库中的信息

用JAVA编写代码,数据库中的学生信息表在图形界面中显示,图形界面做出来了,可是点击显示,却无法在界面中显示数据库中的信息,大神们,可以帮忙看看吗?
做出的图形界面:

当点击“显示”,下图数据库中的信息就在上面界面中显示出来

http://img.mukewang.com/5754416100016a4305350170.jpg

图形界面没问题,可是不能讲以上信息显示,大神们可以帮我看看吗?代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class SM extends JFrame implements ActionListener{// 学生信息管理
	  int width=600; //窗体的宽度
      int height=400;//高度
      JTable sTable;//
      TableModel model;//表模型
      JScrollPane scroll;//带滚动条的面板
      Object[][] playerInfo;//存放表格中的数据
      Object[] columnNames;//定义表格中的列名
  	JPanel p1 = new JPanel();
  	JPanel p = new JPanel();
      Connection con = null;// conn获取链接
  	Statement stmt = null;// 通过链接创建Statement对象stmt,在通过stmt对象执行sql语句
  	ResultSet rs = null;// 定义rs接收executeQuery()方法返回的ResultSet对象,查询的数据就存放在rs对象中
      //首先创建菜单栏
      JMenuBar bar = new JMenuBar();
      //创建文件菜单
      JButton btnAdd = new JButton("增加");
  	JButton btnDelete = new JButton("删除");
  	JButton btnAlter = new JButton("修改");
  	JButton btnSearch = new JButton("查询");
  	JButton btnDisplay = new JButton("显示");
  	JButton back = new JButton ("返回上一级");
      SM(){//构造函数
    	  super("学生信息管理系统"); 
          this.setSize(width, height);
        
      	init();
   	this.setVisible(true); // 显示窗体
   	this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗体的关闭方式,点击小叉退出应用程序
      }
      
      public void init() {
    	  add("South", p);
    		this.add("Center", p1);
    	  //菜单栏上添加菜单
    	  bar.add(btnDisplay);
    	  bar.add(btnAdd);
    	  bar.add(btnDelete);
    	  bar.add(btnAlter);
    	  bar.add(btnSearch);
    	  bar.add(back);
   	   //给窗体添加菜单栏
   	   this.setJMenuBar(bar);
   	   //设置窗体的位置
   	  int screen_width = (int)this.getToolkit().getScreenSize().getWidth(); //得到屏幕的宽度
	   int screen_height = (int)this.getToolkit().getScreenSize().getHeight(); //得到屏幕的高度
	   this.setLocation((screen_width-width)/2, (screen_height-height)/2);
	  this.setResizable(false);//true,则使 窗体大小可变,否则大小不可变
	   this.setVisible(true);//true,则使  窗体 可见,否则隐藏 窗体
	 //为组件注册事件监听器
		btnAdd.addActionListener(this);
		btnDelete.addActionListener(this);
		btnAlter.addActionListener(this);
		btnSearch.addActionListener(this);
		btnDisplay.addActionListener(this);
		back.addActionListener(this);
      }
      public void connDB() { // 连接数据库
  		try {
  			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  		} catch (ClassNotFoundException e) {
  			e.printStackTrace();
  		}
  		try {
  			con = DriverManager.getConnection("jdbc:sqlserver://localhost:1434;DatabaseName=DBstudent", "sa",
  					"1234567890");
  			stmt = con.createStatement();
  		} catch (SQLException e) {
  			e.printStackTrace();
  		}
  	}

  	public void closeDB() // 关闭连接
  	{
  		try {
  			stmt.close();
  			con.close();
  		} catch (SQLException e) {
  			e.printStackTrace();
  		}
  	}

  	/*
	 * 显示所有学生的信息所以定义一个ModelST类的集合List<ModelST>来接收返回值:所有信息
	 */
  
	public void dispose() {
		int j=0;
		int i=0;//记录数据库中有好多组信息
		String[] columnNames = { "学号", "姓名", "年龄", "性别", "院系" };
		this.connDB();// 连接数据库
		/*
		 * 调用stmt对象的executeQuery()方法,查询数据库的信息
		 * executeQuery()方法的返回只是ResultSet对象,定义rs接收返回的ResultSet对象 查询的数据就存放在rs对象中
		 */
		try {
		 rs = stmt.executeQuery("select * from student order by sno");
		List<ModelST> gs = new ArrayList<ModelST>();
		ModelST g = null;
		/*
		 * rs对象的next()方法获取数据,若返回true证明对象中有数据 通过while循环将对象中的数据打印出啦。
		 */
		while (rs.next()) {
			g = new ModelST();
			g.setSno(rs.getInt("sno"));
			g.setDept(rs.getString("sd"));
			g.setName(rs.getString("sn"));
			g.setAge(rs.getInt("sa"));
			g.setSex(rs.getString("ss"));
			gs.add(g);
			i++;
		}
		playerInfo = new Object[i][5];
		for (ModelST go : gs) {
			playerInfo[j][0] = g.getSno();
			playerInfo[j][1] = g.getName();
			playerInfo[j][2] =g.getAge();
			playerInfo[j][3] = g.getSex();
			playerInfo[j][4] = g.getDept();
			j++;
		}
		//初始化表模型,利用子类DefaultTableModel生成TableModel接口对象
		model=new DefaultTableModel(playerInfo, columnNames);
		sTable = new JTable(model);//初始化JTable
		//初始化带滚动条的面板
		scroll = new JScrollPane();
		scroll.getViewport().add(sTable);
		this.getContentPane().add(scroll);
		this.closeDB();
		}catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand() == "显示") {
			/*JOptionPane.showConfirmDialog(null, "进入学生界面", "提示信息", JOptionPane.DEFAULT_OPTION,
					JOptionPane.OK_OPTION);
					*/
			this.dispose();			
		}if (e.getActionCommand() == "返回上一级") {
			int result =	JOptionPane.showConfirmDialog(null, "您真的要退出系统吗?", "提示信息", JOptionPane.OK_CANCEL_OPTION);
			   if(result==JOptionPane.OK_OPTION)
			   {
				   System.exit(0); //退出系统
			   }
			   else
			   {
				   return;
			   }
		}
	}
}


橙子lovesun
浏览 4807回答 1
1回答

styledboy

jdbc
随时随地看视频慕课网APP

相关分类

Java
我要回答