gpt4 book ai didi

java - 自定义 TableModel Swing 中的 removeRow() 方法

转载 作者:行者123 更新时间:2023-12-01 15:55:12 25 4
gpt4 key购买 nike

我有一个使用我创建的自定义 TableModel 填充的 JTable。我有另一个 JTable,可以从第一个 JTable 添加行。我可以毫无问题地将行添加到新的 JTable,但是在将其添加到新的 JTable 时,我需要从第一个 JTable 中删除该行。不幸的是,removeRow()只是DefaultTableModel的一个方法,我检查了它的源代码,但它没有显示......

提前致谢!

这是我的自定义表格模型:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ttp;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.*;
import java.util.*;

/**
*
* @author ericrea
*/

/**creates the model for the accounts table*/
public class tableModel extends AbstractTableModel {

//private int rowCount = 0;
private static final int COLUMN_COUNT = 3;
private Conceptual_Package pp;
Conceptual_Package j = GUIpos.i;



public tableModel(Conceptual_Package pp) {
this.pp = pp;

}

/**sets the column headers*/
public String getColumnName(int i){
switch (i) {
case 0:
return "Sec";
case 1:
return "Row";
case 2:
return "Seat";
default:
return null;
}
}

/**figures out how many rows the model needs*/
public int getRowCount() {
int h = 0;
try {
h = Physical_PackageDAO.getInstance().getByConceptual_Package(j.getId()).size();
} catch (DataException ex) {
Logger.getLogger(tableModel.class.getName()).log(Level.SEVERE, null, ex);
}

return h;
}

/**Figures out number of columns*/
public int getColumnCount() {
return COLUMN_COUNT;

}

/**gets the account information from the Physical_Package*/
public Object getValueAt(int rowIndex, int columnIndex) {
String a = null;
String b = null;
String c = null;

try {
Physical_Package pp = Physical_PackageDAO.getInstance().getByConceptual_Package(j.getId()).get(rowIndex);
a = pp.getVenueSeat().getRowInVenue().getSectionInVenue().getSectionNumber();
b = pp.getVenueSeat().getRowInVenue().getRowNumber();
c = pp.getVenueSeat().getSeatNumber();

} catch (DataException ex) {
Logger.getLogger(tableModel.class.getName()).log(Level.SEVERE, null, ex);
}
switch (columnIndex) {
case 0:
return a.trim();
case 1:
return b.trim();
case 2:
return c.trim();
default:
return null;
}

}

/**gets the right account for the Physical_Package*/
public Physical_Package getCPackage(int index){
Physical_Package d = null;
try {
Physical_PackageDAO.getInstance().getByConceptual_Package(j.getId()).get(index);
} catch (DataException ex) {
Logger.getLogger(tableModel.class.getName()).log(Level.SEVERE, null, ex);
}

return d;
}

public void removeRow(int index){

}
//write in mainFrame, in panel
//ValueChanged{
// get the selected name
// Physical_Packages.get()
// namefield.settext(pp.getname);
//
//}
}

最佳答案

Unfortunately removeRow() is only a method for DefaultTableModel

查看 DefaultTableModel 的源代码。这两种方法均已实现,因此您可以使用代码和代码示例。关键是“fireXXX”方法。调用这些方法将通知表模型已更改,以便表可以重新绘制自身。

From your older question (which you just deleted) you state "I can add the row to the new jTable no problem,"

通过查看您的代码(在您删除问题之前),我有以下评论:

在我看来,您正在创建一个全新的 TableModel。这与向现有模型添加行不同。这似乎不是一个很好的解决方案。相反,您需要创建一个 addRow(...)

如果您发现 DefaultTableModel 中的代码太困惑,那么这里有一些代码显示了我如何实现 addRow(...) 和 removeRow(...) 方法。请参阅Row Table Model 。该类显示了每种方法使用的正确 fireXXX 方法。

关于java - 自定义 TableModel Swing 中的 removeRow() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com