GUI面板中,
用鼠标选中表中的一行数据,
怎样才能获得我 选中的 这一行的 数据呢?

解决方案 »

  1.   

    在你的table的表结构中(比如是vector)利用行号进行循环查询,就能得到了 
      

  2.   

    用一个循环  然后用 getvalueat这个
      

  3.   

      for(int i=0;i<行数;i++){
    jTable1.getModel().getValueAt(i, 列);
    }
    用这个思路来取吧哪一列可以给表格添加一个MouseListener来获得\
    不明白的话可以继续探讨
      

  4.   

    一般不这么用啊
    都是用getValueAt()
    如果用Vector,那么不是任何情况都通用,有的时候表格的数据不是由Vector的形势给出的
      

  5.   

    楼主可以试试这个/**
         *选中某行,并返回信息到文本框
         */
        private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
            int rr;
            String tt = null;
            rr = jTable1.getSelectedRow();
            String t = jTable1.getValueAt(rr,0).toString();
            String t1 = jTable1.getValueAt(rr,1).toString();
            String t2 = jTable1.getValueAt(rr,2).toString();
            String t3 = jTable1.getValueAt(rr,3).toString();
            jTextField1.setText(t);
            jTextField2.setText(t1);
            jTextField3.setText(t2);
            jTextField4.setText(t3);
      

  6.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.table.*;
    import java.util.*;public class Frame1
        extends JFrame implements ActionListener {
      public Frame1() {
        try {
          jbInit();
        }
        catch (Exception exception) {
          exception.printStackTrace();
        }
      }  JPanel jPanel1 = new JPanel();
      JButton jButton1 = new JButton();//add rows in the table
      DefaultTableModel dtm = new DefaultTableModel(0, 3);
      DefaultTableModel dtm1 = new DefaultTableModel(0, 3);
      JButton jButton2 = new JButton();//clear table
      JButton jButton3 = new JButton();//move table1 to table2 "<<"
      JPanel jPanel2 = new JPanel();
      JScrollPane jScrollPane1 = new JScrollPane();
      JTable jTable1 = new JTable(dtm);
      JScrollPane jScrollPane2 = new JScrollPane();
      JTable jTable2 = new JTable(dtm1);  private void jbInit() throws Exception {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jButton2.setText("清空 ");
        jButton2.addActionListener(this);
        jButton3.setText(" < < ");
        this.getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
        jButton1.addActionListener(this);
        jPanel1.add(jButton1);
        jPanel1.add(jButton2);
        this.getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);
        jPanel2.add(jScrollPane2);
        jScrollPane2.getViewport().add(jTable2);
        jPanel2.add(jButton3);
        jPanel2.add(jScrollPane1);
        jScrollPane1.getViewport().add(jTable1);
        jButton3.addActionListener(this);
        jButton1.setText("添加一行 ");
        this.setBounds(0, 0, 1000, 700);
        this.setVisible(true);
      }
      public static void main(String[] args) {
        Frame1 f = new Frame1();
      }  public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(jButton2)) { //清空
          while (dtm.getRowCount() > 0) {
            dtm.removeRow(0);
          }
        }
        else if (e.getSource().equals(jButton1)) { //添加一行
          String[] a = {
              String.valueOf(Math.random()), String.valueOf(Math.random()),
              String.valueOf(Math.random())};
          dtm.addRow(a);
        }
        else if (e.getSource().equals(jButton3)) {
          if (this.jTable1.getSelectedRow() >= 0) {
            //System.out.println(dtm.getDataVector().get(jTable1.getSelectedRow()).getClass());
            //dtm1.addRow((String[])dtm.getDataVector().get(jTable1.getSelectedRow()));
            dtm1.addRow( (Vector) dtm.getDataVector().get(jTable1.getSelectedRow()));
          }
        }
      }
    }或许有帮助
      

  7.   

    用循环...因为列数是已知的.
    如果你的Model里面的数据是用JList,或是Vector,或是数组存放则可以在你的TableModel里面多写个函数来得到那一行的数据.