java中怎么删除或者修改JTable指定的一行内容?

java中怎么删除或者修改JTable指定的一行内容?,第1张

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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10070878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存