JTable 不能正确显示标题文档格式.docx
- 文档编号:5266723
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:38
- 大小:33.58KB
JTable 不能正确显示标题文档格式.docx
《JTable 不能正确显示标题文档格式.docx》由会员分享,可在线阅读,更多相关《JTable 不能正确显示标题文档格式.docx(38页珍藏版)》请在冰点文库上搜索。
不要Null;
至此,Table和表头都可以正常显示了。
package
stuinfosystem;
import
java.awt.BorderLayout;
java.awt.Frame;
javax.swing.JDialog;
javax.swing.JPanel;
javax.swing.JTable;
java.awt.Rectangle;
javax.swing.table.DefaultTableModel;
javax.swing.table.JTableHeader;
java.sql.ResultSet;
java.sql.*;
javax.swing.JScrollPane;
java.awt.FlowLayout;
/**
*
<
p>
Title:
/p>
*
Description:
Copyright:
Copyright
(c)
2008<
Company:
@author
not
attributable
@version
1.0
*/
public
class
CourseManageDialog
extends
JDialog
{
JPanel
panel1
=
new
JPanel();
//需要注意的地方
DefaultTableModel
table=new
DefaultTableModel();
JTable
jTable1
JTable(table);
JTableHeader
jTableHeader1
jTable1.getTableHeader();
JScrollPane
jScrollPane1
JScrollPane();
CourseManageDialog(Frame
owner,
String
title,
boolean
modal)
super(owner,
modal);
try
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jbInit();
pack();
}
catch
(Exception
exception)
exception.printStackTrace();
}
CourseManageDialog()
this(new
Frame(),
"
CourseManageDialog"
false);
private
void
jbInit()
throws
Exception
panel1.setLayout(null);
jScrollPane1.setBounds(new
Rectangle(2,
0,
329,
88));
this.getContentPane().add(jTableHeader1,
java.awt.BorderLayout.NORTH);
this.getContentPane().add(panel1,
java.awt.BorderLayout.CENTER);
panel1.add(jScrollPane1);
jScrollPane1.getViewport().add(jTable1);
//要注意的地方
table.addColumn("
编号"
);
学科名称"
学分"
课程性质"
a="
;
b="
int
c;
d;
s1="
select
courseid,coursename,coursescore,coursecondition
from
course"
ConnectDB.GetCon();
ResultSet
rs
ConnectDB.ExecuteSql(s1);
while
(rs.next())
a
rs.getString
(1);
b
rs.getString
(2);
c
rs.getInt(3);
d
rs.getInt(4);
//System.out.println(a+b+c+d);
//test
//下面又是要注意的地方
Object[]
cells
{a,
b,
c,
d};
table.addRow(cells);
(SQLException
ex)
ex.printStackTrace();
JTable中修改后的数据如何保存到数据库中?
点击19
回复0
∙快捷回复
123.158.38.*IP
发表于2010-03-0309:
25:
411
编了一个关于学生信息的程序,在对jtable插入,删除几行,修改数据以后,想点击“保存”按钮就能把Jtable中全部数据存到数据库中,替换数据库中原有数据。
我不知道该怎么做,网上找了好久也没找到。
一段代码如下:
classShowextendsJPanelimplementsActionListener{//显示学生信息
DefaultTableModeldtm;
JTabletable;
Objecta[][];
Objectname[]={"
学号"
"
姓名"
性别"
出生日期"
民族"
籍贯"
专业"
身高"
体重"
};
JButtonconserve,insert,del;
Connectioncon;
Statementsql;
ResultSetrs;
Show(){//把数据库中的数据放到JTable中
try{
con=DriverManager.getConnection("
jdbc:
odbc:
hello"
sql=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=sql.executeQuery("
SELECT*FROMmessage"
rs.last();
intlastNumber=rs.getRow();
a=newObject[lastNumber][9];
intk=0;
rs.beforeFirst();
while(rs.next()){
a[k][0]=rs.getString
(1);
a[k][1]=rs.getString
(2);
a[k][2]=rs.getString(3);
a[k][3]=rs.getDate(4);
a[k][4]=rs.getString(5);
a[k][5]=rs.getString(6);
a[k][6]=rs.getString(7);
a[k][7]=rs.getDouble(8);
a[k][8]=rs.getDouble(9);
k++;
con.close();
catch(SQLExceptione){}
insert=newJButton("
插入信息"
del=newJButton("
删除信息"
conserve=newJButton("
保存信息"
insert.addActionListener(this);
del.addActionListener(this);
conserve.addActionListener(this);
dtm=newDefaultTableModel(a,name);
table=newJTable(dtm);
JScrollPanejt=newJScrollPane(table);
setLayout(newBorderLayout());
add(jt,BorderLayout.NORTH);
JPaneljb=newJPanel();
jb.add(insert);
jb.add(del);
jb.add(conserve);
jb.setBackground(Color.pink);
add(jb,BorderLayout.CENTER);
setVisible(true);
validate();
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==insert){//插入
intn=table.getSelectedRow();
dtm.insertRow(n+1,newObject[]{});
elseif(e.getSource()==del){//删除
dtm.removeRow(n);
elseif(e.getSource()==conserve){//保存
保存怎么写我就不知道了。
1.我有想过JTable里的数据放到一个二维数组中,再把二维数组导入数据库中,这样可不可行?
elseif(e.getSource()==conserve){
intn=table.getRowCount();
Objectb[][]=newObject[n][9];
for(inti=0;
i<
n;
i++)
for(intj=0;
j<
9;
j++)
b[i][j]=dtm.getValueAt(i,j);
这一段是不是把JTable里的数据放到一个二维数组中?
如果是,接下去该怎么写?
2.哪位能根据我的代码把保存的代码写出来?
截图:
不要复制,粘贴,乱回答!
我看不到你哪里把数据插入到数据库了,也不见你修改,你只是把数据查询显示出来。
一步是不行的。
你应该分开几个JTextField输入值,然后拿JTextField.text
在保存/修改按钮事件
intresult=sql.executeUpdata("
insertinto表()values('
+JTextField.text+"
'
)"
...
连接数据库与JTable
1连接数据库与JTable
1.1TableModel和读取数据库
TableModel定义了存入和管理数据的方法,它还能为每一列定义数据名,并且可以设置单元格是否可编辑。
它以一个二维数组的形式存入数据。
下面有我关于如何读取数据库资料到TableModel的一个例子:
publicclassTbModelextendsAbstractTableModel
privatestaticfinallongserialVersionUID=1L;
privateVectordata;
privateVectortitles;
Connectionconnect;
Statementstate;
ResultSetrs;
publicmyTableModel()
{
data=newVector();
try
Class.forName("
com.mysql.jdbc.Driver"
connect=DriverManager.getConnection("
mysql:
//localhost/javaproject"
root"
dddddd"
state=connect.createStatement();
rs=state.executeQuery("
select*fromproduct"
while(rs.next())
{
data.add(rs.getString
(1));
data.add(rs.getString
(2));
data.add(rs.getString(3));
data.add(rs.getString(4));
data.add(rs.getString(5));
}
catch(ClassNotFoundExceptione)
System.out.println("
JDBCdrivernotloaded:
\n"
+e);
catch(SQLExceptione)
Connectionfailed:
titles=newVector();
titles.add("
CATEGORY"
NAME"
PRICES"
QUANTITY"
ADDRESS"
publicintgetRowCount()
returndata.size()/getColumnCount();
publicintgetColumnCount()
returntitles.size();
publicObjectgetValueAt(introwIndex,intcolumnIndex)
returndata.get((rowIndex*getColumnCount())+columnIndex);
publicStringgetColumnName(intcolumnIndex){
StringcolName=newString();
if(columnIndex<
=getColumnCount())
colName=(String)titles.get(columnIndex);
returncolName;
当从AbstractTableModel继承一个类时,getRowCount(),getColumnCount(),和getValueAt(introwIndex,intcolumnIndex)等方法将自动建立(用Eclipse),记住上面所提的第三个方法,我们一会会用到。
另外在上面的类中,getColumnName(intcolumnIndex)方法是用来定义列名字的。
1.2通过TableModel连接数据库和JTable
接下来,你只需要把下列代码加入你的界面代码中就好:
2
读取你所选中单元格的值
2.1addMouseListener()方法
JTable可以用addMouseListenner()方法来监听鼠标动作,下面的代码是当鼠标点下时,返回鼠标所点的单元格的行列索引:
table.addMouseListener(newjava.awt.event.MouseAdapter(){
publicvoidmouseClicked(java.awt.event.MouseEvente)
introw=((JTable)e.getSource()).rowAtPoint(e.getPoint());
intcol=((JTable)e.getSource()).columnAtPoint(e.getPoint());
});
现在你可以得到行列索引row和col啦!
2.2 取得单元格里的值
你还记得上一章我让你记住的那个方法吗?
没错,getValueAt(introwIndex,intcolumnIndex)方法!
把row和col带入到这个方法中就能返回单元格中的值了。
JTabletable=newJTable(newTbModel())
当你改变数据库时,JTable里的数据没有跟着改变?
很简单的,别像我一样浪费两个礼拜找答案,把下面的两句话抄下来就好了:
table.setModel(newTbModel());
table.updateUI();
JTable在数据库中的应用
标签:
数据库取表格
在JTable中显示
分类:
技术
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JTable 不能正确显示标题 不能 正确 显示 标题