如何刪除jTable中選中的某一行???

a64586813 2008-12-18 08:45:58
rtrt...誰寫個列子給我看看啊
...全文
1070 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
For_suzhen 2008-12-22
  • 打赏
  • 举报
回复
int[] rows = getSelectedRows();
removeRow(rows[i]);
king_spf 2008-12-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 a64586813 的回复:]
引用 3 楼 king_spf 的回复:
DefaultTableModel类不是有这样一个DefaultTableModel(Object[][] data, Object[] columnNames)构造方法吗?data是你所要传进来的数据,columnNames是列名。用这个构造方法新建一个对象,然后作为参数传到Jtable中。Jtable有个方法getSelectRow()返回选中的行号,然后removeRow()。

Java code
DefaultTableModel dtm = new DefaultTableModel(data,names);
//data是一个存放表格内容的二维数…
[/Quote]
JTable有个getSelectRow()方法
爱摸鱼de老邪 2008-12-21
  • 打赏
  • 举报
回复
也推荐自己去实现一个继承AbstractTableModel的类
aaronshai 2008-12-21
  • 打赏
  • 举报
回复
用这个AbstractTableModel抽象类比较好点.
focusforce 2008-12-21
  • 打赏
  • 举报
回复
从view获取选中的行,从model删除,删除传递的参数应该是view转换到model的行号。
laogong 2008-12-19
  • 打赏
  • 举报
回复
JTable 删除选中行
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;



public class test extends JFrame {

private JPanel jContentPane = null;
private JScrollPane jScrollPane = null;
private JTable viewtable = null;
private JButton jButton = null;
//建立一个模型,之后的表将在建立在模型下,或者说是以模型为一个基本模板;
DefaultTableModel dtm = null;

//表中表头名;
String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years",
"Vegetarian" };

//表中数据;
Object[][] data = {
{ "Mary", "Campione", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "Alison", "Huml", "Rowing", new Integer(3), new Boolean(true) },
{ "Kathy", "Walrath", "Knitting", new Integer(2),
new Boolean(false) },
{ "Sharon", "Zakhour", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Philip", "Milne", "Pool", new Integer(10), new Boolean(false) } };

/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/

//使用JTABLE ON JSCROLLPANE控件;
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(40,40,650,200));
jScrollPane.setViewportView(getViewtable());
}
return jScrollPane;
}

/**
* This method initializes viewtable
*
* @return javax.swing.JTable
*/
//初始化表;
private JTable getViewtable() {
if (viewtable == null) {
viewtable = new JTable();
//将表头和数据放入模型中;
dtm=new DefaultTableModel(data,columnNames);
//用模型建立表;
viewtable=new JTable(dtm);
}
return viewtable;
}

/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("del");
jButton.setBounds(new java.awt.Rectangle(289,316,165,28));

//为删除按钮添加监听;
jButton.addActionListener(new ActionListener(){
//实现其中方法;
public void actionPerformed (ActionEvent e){
//取得所选行数组长度;
int numrow=viewtable.getSelectedRows().length;
for (int i=0;i<numrow;i++){
//删除所选行;
dtm.removeRow(viewtable.getSelectedRow());
}

}
});
}
return jButton;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

/**
* This is the default constructor
*/
public test() {
super();
initialize();

}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(772, 500);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(getJButton(), null);
}
return jContentPane;
}

} // @jve:decl-index=0:visual-constraint="10,10"


<------------------------------------------->
JAVA免费开源论坛http://www.jsprun.net
爱摸鱼de老邪 2008-12-19
  • 打赏
  • 举报
回复
还要调用fireXXX通知Table进行更新
king_spf 2008-12-19
  • 打赏
  • 举报
回复
DefaultTableModel类不是有这样一个DefaultTableModel(Object[][] data, Object[] columnNames)构造方法吗?data是你所要传进来的数据,columnNames是列名。用这个构造方法新建一个对象,然后作为参数传到Jtable中。Jtable有个方法getSelectRow()返回选中的行号,然后removeRow()。

DefaultTableModel dtm = new DefaultTableModel(data,names);
//data是一个存放表格内容的二维数组,names是一个存放列名的一维数组。
JTable jt = new JTable(dtm);//用DefaultTableModel对象来构造JTable
int rowNum = jt.getSelectRow();//得到选中行的行号
dtm.removeRow(rowNum);//删除一行

具体的用法就是这样。明白?
a64586813 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 king_spf 的回复:]
DefaultTableModel类不是有这样一个DefaultTableModel(Object[][] data, Object[] columnNames)构造方法吗?data是你所要传进来的数据,columnNames是列名。用这个构造方法新建一个对象,然后作为参数传到Jtable中。Jtable有个方法getSelectRow()返回选中的行号,然后removeRow()。

Java code
DefaultTableModel dtm = new DefaultTableModel(data,names);
//data是一个存放表格内容的二维数组,names是一个存放列名的一维…
[/Quote]

我選中的行號怎么得到???
a64586813 2008-12-18
  • 打赏
  • 举报
回复
具體怎么用啊???API上沒例子啊
king_spf 2008-12-18
  • 打赏
  • 举报
回复
用DefaultTableModel类的对象去构造JTable。
DefaultTableModel有个removeRow(int row)方法。
查API,仔细看看DefaultTableModel类吧。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧