2016-06-11 12 views
0

私はJTableを持っています。ユーザーがセルをクリックすると、別のJTableが作成され、そのセルの行全体のデータが列形式で表示されます(つまり、行は列に変換されます)。テーブルモデルにMouseListenerを追加する方法

これはユーザーがクリックしたときに発生しますが、毎回発生するように少し刺激的なので、ダブルクリックでのみ作成します。

テーブルのgetSelectionメソッドは、MouseListenerではなくaddListSelectionListenerメソッドのみを使用するという問題があります。私は何をしたいのですか?ここで

はコードです:

public void valueChanged(ListSelectionEvent e) { 
       if (!e.getValueIsAdjusting()) { 
        int selectedRow = table.getSelectedRow(); 
        DefaultTableModel newModel = new DefaultTableModel(); 
        String rowName = "Row: " + selectedRow; 
        newModel.setColumnIdentifiers(new Object[]{rowName}); 
        for (int i = 0; i < table.getModel().getColumnCount(); i++) { 
         newModel.addRow(new Object[]{table.getModel().getValueAt(selectedRow, i)}); 
        } 
        JTable newTable = new JTable(newModel) { 
         /** 
         * 
         */ 
         private static final long serialVersionUID = 1L; 

         @Override 
         public Dimension getPreferredScrollableViewportSize() { 
          return new Dimension(140, 240); 
         } 
        }; 

        // Apply any custom renderers and editors 
        JOptionPane.showMessageDialog(frame, new JScrollPane(newTable), 
         rowName, JOptionPane.PLAIN_MESSAGE); 
       } 
      } 
     }); 

答えて

2

これが発生したときにユーザーがクリックするが、そのように私は唯一のダブルクリックでそれを作りたいたびに起こることに刺激ビット

ListSelectionListenerではなく、MouseListenerを使用します。クリック数が2のマウスイベントを確認します。

詳細と動作例については、How to Write a MouseListerのSwingチュートリアルのセクションを参照してください。

また、ダブルクリックするとデフォルトでエディタが起動し、セルが編集可能でないことを確認します。したがって、テーブルのisCellEditable(...)メソッドをオーバーライドする必要があります。

関連する問題