Ciao a tutti,
Ho un problema nel recuperare i dati da una JTable ordinabile sfruttando un MouseListener.
Essendo ordinabile quando la riordino con l'ascoltatore riesco sempre a recuperare l'id esatto della riga che ho clickato, però quando cerco di recuperare i dati, questi sono relativi alla tabella non ordinata.
In pratica io creo una JTable all'interno di un JScrollPane, la tabella è creata con un AbstractTableModel(ResultTableModel a cui è passato un file txt) ed ordinata con un TableRowSorter.
codice:resultTable = new JTable(new ResultTableModel(file)); scrollPane = new JScrollPane(resultTable); resultTable.setFillsViewportHeight(true); resultTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //resultTable.setAutoCreateRowSorter(true); resultTable.addMouseListener(new DoubleClickListener()); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(resultTable.getModel()); resultTable.setRowSorter(sorter);
L'AbstractTableModel è semplicissimo, l'ho copiato dal sito oracle:
E infine questo è il mio ascoltatore:codice:class ResultTableModel extends AbstractTableModel{ private String[] columnNames = {"Col1","Col2","Col3","Col4","Col5"}; private Object[][] data; public ResultTableModel(FileRead file){ data = file.getArrayFile(); } public int getColumnCount() { return columnNames.length; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return columnNames[col]; } public Object getValueAt(int row, int col) { return data[row][col]; } public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } public boolean isEditable(){ return false; } }
Cosi facendo recupero i dati della tabella non ordinata, dove sbaglio?codice:class DoubleClickListener extends MouseAdapter{ private int clickRow = 0; public void mouseClicked(MouseEvent e){ if(e.getClickCount() < 2) return; if(e.getButton() != MouseEvent.BUTTON1) return; JTable table = (JTable)e.getSource(); JOptionPane.showMessageDialog(null, " "+ table.getModel().getValueAt(clickedRow,1)+ " - "+ table.getModel().getValueAt(clickedRow,3)+ " - "+ table.getModel().getValueAt(clickedRow,0)+ " - "+ table.getModel().getValueAt(clickedRow,2)+ " - "+ table.getModel().getValueAt(clickedRow,4)); } }

Rispondi quotando