表限制的大小设置为静态限制,我想将其更改为动态
这里jtable&对象声明。
public JTable issuetable = null;
static Object[][] data;
这是我的jtable
public JTable getIssues() {
issuetable = new JTable();
String[] colName = {"Member", "Book", "Issue Date", "Return Date ",
"Remarks" };
List<Issue>issues=ServiceFactory.getIssueServiceImpl().findAllIssue();
issata的大小限制为100000 ..我想将限制更改为动态..
data=new Object[issues.size()][100000];
for(Issue issue:issues){
data[i][0]=issue.getMemberId().getName();
data[i][1]=issue.getBookId().getName();
data[i][2]=issue.getIssueDate();
data[i][3]=issue.getReturnDate();
data[i][4]=issue.getRemark();
data[i][5]=issue;
i++;
}
如果你知道答案,请在这里分享..
答案 0 :(得分:3)
在AbstractTableModel
的实现中使用动态可调整大小的数据结构而不是数组。此EnvDataModel
是一个包含Map<String, String>
。
答案 1 :(得分:3)
在previous question中,您使用的是DefaultTableModel
。请记住,TableModel
本身就是一种数据结构。无需将数据存储在两个数据结构中,即data[][]
和 DefaultTableModel
。 DefaultTableModel
的基础结构是Vector
的动态Vector
。
你能做的就是这个。只需使用此构造函数
声明您的DefaultTableModel
为0行
然后只需使用
动态地向行添加行public void addRow(Object[] rowData)
- 在模型末尾添加一行。除非指定了rowData,否则新行将包含空值。将生成正在添加的行的通知。所以基本上,你的宣言将是这样的
String[] colName = {"Member", "Book", "Issue Date", "Return Date ", "Remarks" };
DefaultTableModel model = new DefaultTableModel(colName, 0);
JTable table = new JTable(model);
然后只需添加
等行String member = "Stack";
String book = "overflow";
Data issueDate = date;
....
Object[] row = { member, book, issueDate, returnDate, remarks };
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(row);
请阅读DefaultTableModel api documentation以查看更多可用的构造函数和方法
答案 2 :(得分:1)
您可以使用List作为自定义TableModel的数据结构,而不是将List中的所有数据复制到DefaultTableModel。然后,您可以从此TableModel添加/删除Issue对象。
请参阅Row Table Model中的JButtonTableModel.java
示例,了解如何扩展RowTableModel
以便为您提供此功能的简单示例。
使用此方法,数据只能在一个地方使用,您可以直接从TableModel访问Issue对象。