亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ListSelectionListener 將無法正常工作

ListSelectionListener 將無法正常工作

慕婉清6462132 2023-09-13 15:25:59
這是我的代碼。從左到右選擇時出現問題。        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();     }     }當您從左向右選擇時出現問題。我還想每個動作只輸出一次。
查看完整描述

1 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

代碼中有2個問題。


1. 第一個問題是當鼠標單擊和釋放鼠標時,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);

2. 第二個問題是你打印數據的地方。它應該在 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);

    }

}


查看完整回答
反對 回復 2023-09-13
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號