如何从getValueAt中节省价值 - Java

时间:2014-06-04 11:12:20

标签: java swing jtable mouselistener tablemodel

我有一张表,每当我点击表格的单元格时,都会读取它的值。 我想将这些数据存储在arraylist中,以便您可以将此信息用于我的应用程序的另一种形式。

这可能吗? 有人能帮帮我吗? 非常感谢你。

我从jTable获取值的代码

jMyTable.addMouseListener(new MouseListener() {  

       public void mouseClicked(MouseEvent e) {         
        { 
            int selectedRowIndex = jMyTable.getSelectedRow();
            int selectedColumnIndex = jMyTable.getSelectedColumn();
            Object selectedObject = (Object) jMyTable.getModel().getValueAt(selectedRowIndex, selectedColumnIndex);
            System.out.println(selectedObject);
            }
                });  
    }

3 个答案:

答案 0 :(得分:0)

您可以实现ListSelectionListener。

//添加一个侦听器以撤消选择要更新的行。把它放在构造函数

  ListSelectionModel selectionModel = jTable1.getSelectionModel();
  selectionModel.addListSelectionListener(this);

//实现接口的方法

public void valueChanged(ListSelectionEvent evt) {
    if(evt.getSource() == jTable1.getSelectionModel() &&
          evt.getValueIsAdjusting()){
      TableModel model = (TableModel)jTable1.getModel();
      Integer i =(Integer)model.getValueAt(jTable1.getSelectedRow(), 0);

然后我猜你有一个数据库。        //创建数据库的对象,找到所选行并检索信息

     DBManager db = new DBManager();

      CoachTrip c = db.findById(i);//here you retrieve the info and can store at any array or object 

      db.close();//close database if you have any

通过这种方式它将起作用

答案 1 :(得分:0)

可能是这样的(Java 7语法示例):

List<Object> objs = new ArrayList<>();
jMyTable.addMouseListener(new MouseListener() {  

   public void mouseClicked(MouseEvent e) {         
    { 
        int selectedRowIndex = jMyTable.rowAtPoint(e.getPoint());
        int selectedColumnIndex = jMyTable.columnAtPoint(e.getPoint());
        Object selectedObject = jMyTable.getValueAt(selectedRowIndex, selectedColumnIndex);
        objs.add(selectedObject);
        System.out.println(selectedObject);
        }
            });  
}

答案 2 :(得分:-1)

创建一个全局数组和一个整数

Object[] objs = new Object[];
int counter = 0;
每次鼠标单击

执行此操作而不是system.out.println

objs[counter] = (Object) jMyTable.getModel().getValueAt(selectedRowIndex, selectedColumnIndex);
counter++;

计数器告诉数组存储下一个接收对象的位置。首次单击单元格时,它会将对象存储在数组中的0索引处,然后存储在1上,依此类推。代码工作需要计数器