如何将数据库的内容用JAVA的JTable显示出来。

packageitem;importjava.awt.Dimension;importjava.awt.HeadlessException;importjava.awt.... package item;
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.Point;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.JTable;
import db.Conn;
import java.awt.Rectangle;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Manager extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JButton jButton = null;

private JButton jButton1 = null;

private JButton jButton2 = null;

private JTable jTable = null;

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setLocation(new Point(20, 0));
jButton.setText("修改信息");
jButton.setSize(new Dimension(100, 30));
}
return jButton;
}

private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setLocation(new Point(140, 0));
jButton1.setText("删除信息");
jButton1.setSize(new Dimension(100, 30));
}
return jButton1;
}

private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setLocation(new Point(260, 0));
jButton2.setText("显示全部");
jButton2.setSize(new Dimension(100, 30));
}
return jButton2;
}

private void Debark() {
Conn conn=null;
ResultSet rs=null;
String sql=null;
conn=new Conn();
sql= "select * from message where =";
rs=conn.executeQuery(sql);

try {
if (rs.next())
{

}
else
JOptionPane.showMessageDialog(null,"无对应信息");
} catch (HeadlessException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
jTable.setBounds(new Rectangle(17, 97, 341, 82));
}
return jTable;
}

public static void main(String[] args) {
// TODO 自动生成方法存根
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Manager thisClass = new Manager();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}

public Manager() {
super();
initialize();
}

private void initialize() {
this.setSize(400, 300);
this.setContentPane(getJContentPane());
this.setTitle("管理员系统");
}

private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getJButton2(), null);
jContentPane.add(getJTable(), null);
}
return jContentPane;
}
}
这是我的代码,我要怎么改才能把数据库的内容,显示在表格里,就是在图片红圈部分,不要说什么道理,最好能把做好的代码给我,好的加分。
展开
 我来答
shes0821
2011-08-31 · 超过66用户采纳过TA的回答
知道小有建树答主
回答量:171
采纳率:66%
帮助的人:84.6万
展开全部
//package item;
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.Point;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.xml.crypto.Data;
//import db.Conn;
import java.awt.Rectangle;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class Manager extends JFrame {
String xnamearr[]={"课程编号","课程名称","开课时间"};

DefaultTableModel model;

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JButton jButton = null;

private JButton jButton1 = null;

private JButton jButton2 = null;

private JTable jTable = null;

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setLocation(new Point(20, 0));
jButton.setText("修改信息");
jButton.setSize(new Dimension(100, 30));
}
return jButton;
}

private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setLocation(new Point(140, 0));
jButton1.setText("删除信息");
jButton1.setSize(new Dimension(100, 30));
}
return jButton1;
}

private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setLocation(new Point(260, 0));
jButton2.setText("显示全部");
jButton2.setSize(new Dimension(100, 30));
}
return jButton2;
}

// private void Debark() {
// Conn conn=null;
// ResultSet rs=null;
// String sql=null;
// conn=new Conn();
// sql= "select * from message where =";
// rs=conn.executeQuery(sql);
//
// try {
// if (rs.next())
// {
//
// }
// else
// JOptionPane.showMessageDialog(null,"无对应信息");
// } catch (HeadlessException e) {
// e.printStackTrace();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }

private JTable getJTable() {
if (jTable == null) {
model=new DefaultTableModel();
jTable = new JTable(model);
model.setDataVector(getVector(), getVe());//model 传入的是数据库的二维数组 和列的数组!
// jTable.setBounds(new Rectangle(17, 97, 341, 82));
}
return jTable;
}

private JScrollPane getscol(){
JScrollPane sco=new JScrollPane(getJTable());
sco.setBounds(new Rectangle(17, 97, 341, 82));
return sco;
}

public Vector getVe(){
Vector ve=new Vector();
for (int i = 0; i < xnamearr.length; i++) {
ve.add(xnamearr[i]);
}
return ve;
}

private Vector getVector(){
Vector getVector=new Vector();
getVector.add(getVe());
return getVector;
}

public static void main(String[] args) {
// TODO 自动生成方法存根
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Manager thisClass = new Manager();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}

public Manager() {
super();
initialize();
}

private void initialize() {
this.setSize(400, 300);
this.setContentPane(getJContentPane());
this.setTitle("管理员系统");
}

private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getJButton2(), null);
jContentPane.add(getscol(), null);
}
return jContentPane;
}
}

//只需要调用model.setDataVector(传入数据库的二维数组,以及对应的列名称一维数组就可以了);
//如果实现按钮功能只需要做一个model的 get方法然后通过监听实现数据的变更
//只要你能正确获取数据就很简单了
//记得把我注释的部分取消
追问
谢谢了,不过已经解决了
mrchr
2011-08-29 · TA获得超过411个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:148万
展开全部
做Swing,请研究以下内容:
1,beansbinding Bean绑定工具包,能够将POJO数据Model绑定到界面组件上,同时界面组件之间也可以进行属性绑定。
2,Swing application framework。Swing应用程序框架
3,swingx 界面控件扩展包。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljhadxw
2011-08-29 · 超过12用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:40万
展开全部
final Object[][] columnData = {};
final String[] columnName =
{ "主叫号码","被叫号码", "拨号开始时间", "客户姓名", "通话开始时间", "呼叫结果", "通话记录", "坐席号", "坐席组号","通话时长"};
DefaultTableModel dtm = new DefaultTableModel(columnData, columnName);
JTable recordTable = new JTable(dtm);
Object[] data ={"1","2","3","4","5","6","7","8","9","10"}//这里 可以从数据库得到 通过list循环把所有数据add进去
dtm.addRow(data);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
死后是好人
2011-08-29 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:955万
展开全部
你的数据表message是什么结构的,都有哪些列?
我要先设计JTable的模板才能往里添加数据
这个我套用以前的程序,应该很容易改出来
更多追问追答
追问
看你的啦
追答
好了,搞定收工,因为只有JTable用到了数据库,我将数据库的连接单独提了出来,如果像楼主那样每调用一次数据库,就要重新连接一次的话,程序运行着运行着就会突然变得很卡
1、
* 本类为加有单独连接数据库进行存取数据的JTable控件的自定义面板类
* 无参数时,连接默认数据库,默认数据库为odbc源的message数据库,用户名为“It”,密码为“”
* 有参数时,根据参数连接数据库
* 数据库不与主程序关联
2、我单独建立了一个JScrollPane继承类,该类是专门用来显示JTable的具有滚动条的面板,如果查询出的数据有5行,而面板区域只能显示3行的话,普通面板只能显示3行,但是该面板可以通过滚动条显示5行,而且可以重新排放列的顺序,如图3所示,楼主你一试便知
3、而且由于是独立的继承类,楼主可以通过Table t1=new Table();的创建类对象的方法来多次添加这个JTable,楼主完全可以在这一个窗口里添加两个该表格。由于每一个类对象都是不同的,如过传入的参数不同,这两个JTable读取的是不同的两个数据库
4、该类性价比极高,可稍作修改作用于所有表格,从而大幅度提高代码利用和执行效率
5、程序已经通过了我自制数据库的检测,自制数据表如图db所示
6、我自制的数据库连接如图1、2所示
7、我还给你实现了添加数据项到数据库的方法接口,虽然你这三个按钮没用上,但是其他地方估计能用上,删除数据项的这个按钮省着点用啊,最好备份一份儿数据库,你还没有实现添加功能,可着劲地删多少数据项也不够用的啊
给我邮箱吧
PS:该图片为图3,楼主可以看到用JScrollPane来显示JTable而不是用JPanel添加JTable的好处
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式