当我双击JTable的单元格时,我希望它获取该单元格的值并将其写入文本字段。我该怎么办?这是我到目前为止所尝试的内容,但我不知道从哪里开始:
table_1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
JTable table = (JTable) me.getSource();
Point p = me.getPoint();
int row = table.rowAtPoint(p);
if (me.getClickCount() == 2) {
textfield.settext(???????????);
}
}
});
我理解它是如何运作的:
int row = table.rowAtPoint(p);
int column = table.columnAtPoint(p);
textfield.settext(table_1.getValueAt(row, column));
答案 0 :(得分:4)
Jtable table = (JTable)e.getsource();
int row = table.getSelectedRow();
int column = table.getSelectedColumn();
ObjectType o = (ObjectType)target.getValueAt(row, column) );
这样做。将根据所选的行和列获取JTable中的值,然后将返回的值强制转换为表中的对象类型,并返回行,列的值。这是在你的听众中。
显示在类似问题Possible Dup?
中答案 1 :(得分:3)
尝试写下这样的内容:
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(final MouseEvent e) {
if (e.getClickCount() == 1) {
final JTable jTable= (JTable)e.getSource();
final int row = jTable.getSelectedRow();
final int column = jTable.getSelectedColumn();
final String valueInCell = (String)jTable.getValueAt(row, column);
textfield.setText(valueInCell);
}
});
答案 2 :(得分:2)
您可以使用以下方式获取表格的值:
table.getModel().getValueAt(row, col);
,其中
row
- 要查询其值的行col
- 要查询其值的列table
- 您的对象名称(类jTable
)注意:该列是在表格视图的显示顺序中指定的,而不是在TableModel的列顺序中指定的。这很重要 区别是因为当用户重新排列表中的列时, 视图中给定索引处的列将更改。同时 用户的操作永远不会影响模型的列排序。
此外,我建议您阅读this documentation。