Java ListSelectionListener无法正常工作

Java ListSelectionListener无法正常工作,java,swing,jtable,actionlistener,Java,Swing,Jtable,Actionlistener,这是我的密码。 当你从左到右选择时,它出现了问题 import javax.swing.*; import javax.swing.event.*; public class swingex7 extends JFrame{ swingex7(){ JFrame f = new JFrame("Table Example"); String row[][]= {{"101","Hein Htet"

这是我的密码。 当你从左到右选择时,它出现了问题

        import javax.swing.*;
        import javax.swing.event.*;
        public class swingex7 extends JFrame{
        swingex7(){
        JFrame f = new JFrame("Table Example");  
        String row[][]= {{"101","Hein Htet","10000000"},{"102","Hein Htet1","20000000"},{"103","Hein 
        Htet2","30000000"}};
        String column[]= {"Id","Name","Salary"};
        final JTable jt = new JTable(row,column);
        jt.setCellSelectionEnabled(true);
        ListSelectionModel lsm = jt.getSelectionModel();
        lsm.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsm.addListSelectionListener(new ListSelectionListener() {      
            @Override
            public void valueChanged(ListSelectionEvent e) {    
                String data=null;
                int[] rows=jt.getSelectedRows();
                int[] columns = jt.getSelectedColumns();
                for(int i=0;i<rows.length;i++) {
                    for(int j=0;j<columns.length;j++) {
                        data = (String)jt.getValueAt(rows[i], columns[j]);
                    }
                }               
                System.out.println("Table element seleted is "+data);
            }   
         });

         JScrollPane js = new JScrollPane(jt);
         f.add(js);
         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         f.setSize(400, 400);
         f.setVisible(true);
     }
         public static void main (String[]args) {
         new swingex7();
     }
     }
当你从左向右选择时,它出现了问题。
我还希望每个操作只输出一次。

代码中有两个问题

一,。 第一个问题是ListSelectionListener在单击鼠标和释放鼠标时被调用两次。但如果您可以将MouseListener添加到JTable中,则可以如下所示

MouseListener tableMouseListener = new MouseAdapter() {

                  @Override
                  public void mouseReleased(MouseEvent e) {
                      String data = null;
                      int[] rows = jt.getSelectedRows();
                      int[] columns = jt.getSelectedColumns();
                      for (int i = 0; i < rows.length; i++) {
                            for (int j = 0; j < columns.length; j++) {
                                data = (String) jt.getValueAt(rows[i], columns[j]);
                                System.out.println("Table element selected is " + data);
                            }
                      }
                  }
               };
               jt.addMouseListener(tableMouseListener);
二,。 第二个问题是打印数据的位置。它应该在for循环中。否则,数据将在循环的每次迭代中重写,并且只打印最后一个值

for (int i = 0; i < rows.length; i++) {
    for (int j = 0; j < columns.length; j++) {
            data = (String) jt.getValueAt(rows[i], columns[j]);
            System.out.println("Table element selected is " + data);
    }
}

你得到的错误是什么?@Sujay Mohan运行时,尝试从左上角到右上角选择它-即使我选择了它,它也不会正常工作,有时也不会返回输出。我希望每个动作只有一个输出。我发现了问题。我现在就发布。定义您期望的输出。如果从ID列开始并拖动到Salary列,会怎么样?如果从“名称”列开始怎么办?如果从ID列的第一行开始,然后向下拖动到第三行,会怎么样。详细解释你的要求!不知何故,它解决了我的问题,但我想将它与ListSeletionLister一起使用