可以通过在表格的选择模型中添加列表选择监听器来获取选中的行:
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
/**
* Adapted version of a standard Java demo project:
* https://docs.oracle.com/javase/tutorial/displayCode.html?
* code=https://docs.oracle.com/javase/tutorial/uiswing/examples
* /components/SimpleTableDemoProject/src/components
* /SimpleTableDemo.java
*/
public class SimpleTableDemo extends JPanel {
public SimpleTableDemo() {
super(new GridLayout(1, 0));
String[] columnNames = {"First Name", "Last Name", "Sport",
"# of Years", "Vegetarian"};
Object[][] data = {
{"Kathy", "Smith", "Snowboarding", 5, false},
{"John", "Doe", "Rowing", 3, true},
{"Sue", "Black", "Knitting", 2, false},
{"Jane", "White", "Speed reading", 20, true},
{"Joe", "Brown", "Pool", 10, false}
};
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
table.getSelectionModel().addListSelectionListener(
selectionEvent -> {
if (!selectionEvent.getValueIsAdjusting()
&& selectionEvent.getSource().equals(table.getSelectionModel()))
System.out.println("Row index: " + table.getSelectedRow());
}
);
add(new JScrollPane(table));
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("SimpleTableDemo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
SimpleTableDemo newContentPane = new SimpleTableDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(SimpleTableDemo::createAndShowGUI);
}
}