我有以下Java Swing示例
JTable
应用程序:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class JTableListSelectionListener
{
public static void main(String[] a)
{
JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTable table;
String[] columnTitles={"A","B","C","D"};
Object[][] rowData={{"11","12","13","14"},{"21","22","23","24"},{"31","32","33","34"},{"41","42","43","44"}};
table=new JTable(rowData,columnTitles);
table.setCellSelectionEnabled(true);
ListSelectionModel cellSelectionModel=table.getSelectionModel();
cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cellSelectionModel.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
String selectedData=null;
int[] selectedRow=table.getSelectedRows();
int[] selectedColumns=table.getSelectedColumns();
for (int i=0;i<selectedRow.length;i++)
for (int j=0;j<selectedColumns.length;j++)
selectedData=(String)table.getValueAt(selectedRow[i],selectedColumns[j]);
System.out.println("Selected: "+selectedData);
}
});
frame.add(new JScrollPane(table));
frame.setLocationRelativeTo(null);
frame.setSize(300,200);
frame.setVisible(true);
}
}
如果我单击同一行,它不会响应:
如果我点击“12”,然后点击“13”,或者先点击“21”,然后再点击“23”,为什么?
-
如何修复它,使无论我按哪个顺序单击哪里,它都将始终输出该单元格中的值?
-
如何判断我是用鼠标左键还是用鼠标右键点击了?