How do I select all rows in a table without the user selecting them with mouse? For example, I have at a table called InputTable
. Using ActionListener
/TableModelListener
, I can get the selected rows (when the user clicks on them) in a table somewhat in this way:
int[] rows = inputTable.getSelectedRows();
I would now like to select all the rows in the Input table and assign it to say, int [] rows1
. Is there a command like getSelectedRows()
where I can select all the rows without the user interaction? I know that there is a SelectAll()
but I want something specific to the rows alone.
I think you are trying to progamatically select rows of a JTable
.
The JTable
is just a display mechanism. Instead of selecting rows in the table (view), you select rows in the SelectionModel
, so have a look at this small example I made:
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class Test extends JFrame {
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test().createAndShowUI();
}
});
}
private void createAndShowUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponents(frame);
frame.pack();
frame.setVisible(true);
}
private void initComponents(JFrame frame) {
String data[][] = {
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
{"10", "11", "12"}
};
String col[] = {"Col 1", "Col 2", "Col 3"};
DefaultTableModel model = new DefaultTableModel(data, col);
JTable table = new JTable(model);
//call method to select rows (select all rows)
selectRows(table, 0, table.getRowCount());
//call method to return values of selected rows
ArrayList<Integer> values = getSelectedRowValues(table);
//prints out each values of the selected rows
for (Integer integer : values) {
System.out.println(integer);
}
frame.getContentPane().add(new JScrollPane(table));
}
private void selectRows(JTable table, int start, int end) {
// Use this mode to demonstrate the following examples
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// Needs to be set or rows cannot be selected
table.setRowSelectionAllowed(true);
// Select rows from start to end if start is 0 we change to 1 or leave it (used to preserve coloums headers)
table.setRowSelectionInterval(start, end - 1);
}
/**
* Will return all selected rows values
*
* @param table
* @return ArrayList<Intger> values of each selected row for all coloumns
*/
private ArrayList<Integer> getSelectedRowValues(JTable table) {
ArrayList<Integer> values = new ArrayList<>();
int[] vals = table.getSelectedRows();
for (int i = 0; i < vals.length; i++) {
for (int x = 0; x < table.getColumnCount(); x++) {
System.out.println(table.getValueAt(i, x));
values.add(Integer.parseInt((String) table.getValueAt(i, x)));
}
}
return values;
}
}
The magic happens here:
private void selectRows(JTable table, int start, int end) {
// Use this mode to demonstrate the following examples
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// Needs to be set or rows cannot be selected
table.setRowSelectionAllowed(true);
// Select rows from start to end if start is 0 we change to 1 or leave it (used to preserve coloums headers)
table.setRowSelectionInterval(start, end - 1);
}
For more examples have a look here shows you how to use SelectionModel
on JTable
for rows and colomns
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With