2016-06-11 15 views
0

Ich habe eine JTable. Wenn ein Benutzer auf eine Zelle klickt, wird eine andere JTable erstellt, die die Daten für die gesamte Zeile dieser Zelle in einem Spaltenformat anzeigt (dh die Zeile wird in eine Spalte konvertiert).Wie MouseListener zu einem Tabellenmodell hinzufügen

Dies passiert, wenn der Benutzer klickt, aber es ist ein bisschen irritierend, jedes Mal passieren, also möchte ich es nur auf einen Doppelklick machen.

Das Problem besteht darin, dass die getSelection-Methode der Tabelle nur eine addListSelectionListener-Methode und kein MouseListener verwendet. Wie kann ich machen was ich will? Hier

ist der Code:

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); 
       } 
      } 
     }); 

Antwort

2

Dies geschieht, wenn der Benutzer klickt, aber es ist ein wenig irritierend jedes Mal geschehen, so will ich es mache nur einen Doppelklick auf einem

Sie verwenden einen MouseListener, keinen ListSelectionListener. Sie würden das Mausereignis für eine Klickanzahl von 2 überprüfen.

Lesen Sie den Abschnitt aus dem Swing-Lernprogramm auf How to Write a MouseLister für weitere Informationen und Arbeitsbeispiele.

Auch ein Doppelklick startet den Editor standardmäßig, so dass Sie sicherstellen möchten, dass die Zelle nicht editierbar ist. Daher müssen Sie möglicherweise die isCellEditable(...) Methode der Tabelle überschreiben.

Verwandte Themen