gpt4 book ai didi

java - 如何确定 JTable 中的哪个单元格被选中?

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:49 25 4
gpt4 key购买 nike

我在 GUI 中有一个 JTable,我想根据用户单击的单元格的值返回一个数字。这是代码:

ListSelectionModel newmodel = mytable.getSelectionModel();
newmodel.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = mytable.getSelectedRow();
int column = mytable.getSelectedColumn();

int cell = getNewNum();
datefield.setText(String.valueOf(cell));
}
});

我有几个问题。首先,此方法使我的表格可编辑。在使用此方法之前,我无法编辑表格,但现在我可以删除条目。我查看了 API,但我不知道这是为什么。其次,如果我单击第 3 行中的一个单元格,然后单击单元格 3 中的另一行,则不会注册任何事件。如何通过单击当前选定行上的单元格来创建事件?

最佳答案

常用的方法是通过事件获取用户点击的点:

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
int row = jTable1.rowAtPoint(evt.getPoint());
int col = jTable1.columnAtPoint(evt.getPoint());
if (row >= 0 && col >= 0) {
......

}
}
});

这是使用选择模式的第二个选项:

jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
...
int row = jTable1.getSelectedRow();
int col = jTable1.getSelectedColumn());
if (evt.getClickCount() > 1) { // double-click etc...
...

如果你去:

public boolean isCellEditable(int row, int col) {
return false;
}

那么您的 JTable 将不可编辑。

最后为了得到你想要的值,你只需要调用你的JTable模型的getValueAt(row,col),或者像这样得到内容:

Object foo = jTable1.getModel().getValueAt(row, col); 

关于java - 如何确定 JTable 中的哪个单元格被选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com