当行索引 < 0 时取消选择 JTable 行
Unselect JTable row when row index < 0
我的问题很简单,就是不知道如何在google上查询这个。
我想要的只是在单击 JTable
上的一行时打印选定的行索引。
问题是如果我单击有效的行索引
(这是 index >= 0 && index < rowCount
),然后我在 table 下部的有效行之外单击,它没有行(显然现在是 index < 0
),打印的行索引是仍然是我单击的最后一个有效行索引。
我想要的是打印 "No row selected"
并在我单击没有行的 table 的下部空白部分时清除行选择。
(我已经在 table 下方空白部分的行外单击了)
这是我的代码:
JTable table = new JTable(new MyTableModel());
table.setFillsViewportHeight(true);
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int rowIndex = table.getSelectedRow();
if(rowIndex < 0) {
System.out.println("No row selected");
table.clearSelection();
} else {
System.out.println("Row " + rowIndex + " selected");
}
}
});
只有当我将 setFillsViewportHeight
设置为 false
或因为默认情况下为 false
而忽略它时,这个简单程序才按我希望的方式工作.
那么当 table.setFillsViewportHeight
设置为 true
时我该如何执行此操作?
您可以使用table.rowAtPoint(e.getPoint())
获取点击的行。如果选择无效,它将 return -1
(当您单击 table 下方时):
public void mousePressed(MouseEvent e) {
//Updated to use rowAtPoint
int rowIndex = table.rowAtPoint(e.getPoint());
//Existing code
if(rowIndex < 0) {
System.out.println("No row selected");
table.clearSelection();
} else {
System.out.println("Row " + rowIndex + " selected");
}
}
我的问题很简单,就是不知道如何在google上查询这个。
我想要的只是在单击 JTable
上的一行时打印选定的行索引。
问题是如果我单击有效的行索引
(这是 index >= 0 && index < rowCount
),然后我在 table 下部的有效行之外单击,它没有行(显然现在是 index < 0
),打印的行索引是仍然是我单击的最后一个有效行索引。
我想要的是打印 "No row selected"
并在我单击没有行的 table 的下部空白部分时清除行选择。
(我已经在 table 下方空白部分的行外单击了)
这是我的代码:
JTable table = new JTable(new MyTableModel());
table.setFillsViewportHeight(true);
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int rowIndex = table.getSelectedRow();
if(rowIndex < 0) {
System.out.println("No row selected");
table.clearSelection();
} else {
System.out.println("Row " + rowIndex + " selected");
}
}
});
只有当我将 setFillsViewportHeight
设置为 false
或因为默认情况下为 false
而忽略它时,这个简单程序才按我希望的方式工作.
那么当 table.setFillsViewportHeight
设置为 true
时我该如何执行此操作?
您可以使用table.rowAtPoint(e.getPoint())
获取点击的行。如果选择无效,它将 return -1
(当您单击 table 下方时):
public void mousePressed(MouseEvent e) {
//Updated to use rowAtPoint
int rowIndex = table.rowAtPoint(e.getPoint());
//Existing code
if(rowIndex < 0) {
System.out.println("No row selected");
table.clearSelection();
} else {
System.out.println("Row " + rowIndex + " selected");
}
}