jtable修改内容可以通过defaulttablemodel来修改的,以下是defaulttablemodel的简单用法
int col = jTable1.getSelectedColumn()//获取选中的列号int row = jTable1.getSelectedRow()//获取选中的行号
DefaultTableModel model = (DefaultTableModel) jTable1.getModel()//获取defaulttablemodel
Object val = model.getValueAt(row, col)//根据行号和列号,获取某个单元格的值
//其他
model.removeRow(index)//删除某行
model.setValueAt(value, row, col)//修改某单元格的值
更多defaulttablemodel用法,可以去查API文档
用int row= jt.getSelectedRow()if(row!=-1)dtm.removeRow(row)就可以删除指定行了。我给你个例子,你看了就明白了。
import java.awt.BorderLayout
import java.awt.Dimension
import java.awt.GridLayout
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
import javax.swing.JScrollPane
import javax.swing.JTable
import javax.swing.table.DefaultTableModel
public class G {
private Object[][] cells={{"some",0},{"any",1},{"even",2},
{"text",0},{"and",1},{"text",2}}
private String[] columnNames={"Column 1","Column 2"}
JFrame jf
JButton jb
JTable jt
JPanel jp,jp1
JScrollPane scrollPane
DefaultTableModel dtm
G(){
jf=new JFrame("JTable")
jb=new JButton("删除")
jb.addActionListener(new AddActionListener())
dtm = new DefaultTableModel(cells,columnNames)
jt = new JTable(dtm)
jt.setPreferredScrollableViewportSize(new Dimension(300,120))
scrollPane = new JScrollPane(jt)
jp=new JPanel()
jp1=new JPanel()
jp1.add(jb)
jp.setLayout(new GridLayout(2,1))
jp.add(scrollPane)
jp.add(jp1)
jf.add(jp,BorderLayout.CENTER)
jf.setSize(400,400)
jf.setVisible(true)
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
class AddActionListener implements ActionListener{
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==jb){
int row= jt.getSelectedRow() //这句选择要删除的行
if(row!=-1) //这句判断是否有选中的行
dtm.removeRow(row) //这句删除指定行
}
}
}
public static void main(String[] args) {
new G()
}
}
if (ae.getSource() == jb4) {int rowNum = this.jt.getSelectedRow()
if (rowNum == -1) {
JOptionPane.showMessageDialog(this, "请选择一行")
return
}
String stuId = jt.getValueAt(rowNum, 0).toString()//取选择那一行的第一列的对象存入stuId,(原来是sm.getValueAt(rowNum, 0).toString(),但sm应该是table model吧,这里换成jt试试)
String sql = "delete from students where id=?" //删除数据表的delete语句
String params[] = { stuId } //删除时的id参数,这个应该也是对的,猜测删除时使用了PreparedStatement
if (!new StuModel().cud(sql, params)) { //这个地方很费解,直接new了一个stuModel,却不保留引用,难道这里是只对数据库做了 *** 作?可以的话,想看看stuModel的代码
JOptionPane.showMessageDialog(this, "删除失败")
}
sm = new StuModel("")//这里直接替换了原来的table model?从数据库里重新读入数据构建的?最后这几句非常费解,试试这样能不能解决吧
jt.setModel(sm)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)