首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTable选择和TableModel

JTable选择和TableModel
EN

Stack Overflow用户
提问于 2012-09-13 05:33:41
回答 2查看 310关注 0票数 0

我正面临着JTable和与之相关的TableModel的问题。这里的问题是,假设我在JTable上进行了行/行选择,我希望从TableModel中获取特定的行对象并将其传递到某个地方。有没有人知道如何有效地做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2012-09-13 05:45:54

假设你有一个自定义的TableModel,你可以这样做:

代码语言:javascript
复制
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (rowIndex >= items.size()) {
    return null;
}
Object obj = items.get(rowIndex);
if (obj == null) {
      return null;
}

switch (columnIndex){
case -1:
          return obj;
    case 0: ...

(假设items是存储对象的列表)

..。然后,当您需要给定行中的对象时,只需通过调用tableModel.getValueAt(row, -1);获取它

票数 1
EN

Stack Overflow用户

发布于 2012-09-13 11:49:24

我做过一个类似的应用程序。在我的任务中,我必须从一个表中获取数据(行/行),然后将其拖到另一个表中。也就是说,如果用户从一个表中选择行,他应该能够拖动到另一个表。

当用户选择一行时,使用tableA.getSelectedRow()。现在循环遍历以获取每个选定行的所有列。将每一行存储在一个字符串中,并使用换行符作为行尾。在导入时解析字符串并获取每一行。

代码语言:javascript
复制
// Sample code that I have worked on.
protected String exportString(JComponent c) {
JTable table = (JTable) c;
rows = table.getSelectedRows();
int colCount = table.getColumnCount();
    StringBuffer buff = new StringBuffer();
for (int i = 0; i < rows.length; i++) {
     for (int j = 0; j < colCount; j++) {
          Object val = table.getValueAt(rows[i], j);
          if (j != colCount - 1) {
              buff.append(",");
          }
         }
     if (i != rows.length - 1) {
         buff.append("\n");
     }
     }
     System.out.println("Export Success");
 return buff.toString();
}

希望这能对你有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12396483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档