Java 如果未单击任何项目,如何清除JTable和JList中的选择?
我在这里寻找这个答案,但没有找到,所以如果有人需要,我会在下面写下我自己的答案Java 如果未单击任何项目,如何清除JTable和JList中的选择?,java,swing,jtable,jlist,Java,Swing,Jtable,Jlist,我在这里寻找这个答案,但没有找到,所以如果有人需要,我会在下面写下我自己的答案 如果需要,请随意更正任何内容。因此,为了解决这两种情况(JList和JTable),我制作了一个自定义侦听器,将应用于相关列表和表 听众是: public class DeselectOnClickListener extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { super.mou
如果需要,请随意更正任何内容。因此,为了解决这两种情况(JList和JTable),我制作了一个自定义侦听器,将应用于相关列表和表 听众是:
public class DeselectOnClickListener extends MouseAdapter
{
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
clearselection(e);
}
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
clearselection(e);
}
@Override
public void mouseReleased(MouseEvent e) {
super.mouseReleased(e);
clearselection(e);
}
public void clearselection (MouseEvent e){
if (e.getComponent() instanceof JTable){
Point pClicked = e.getPoint();
JTable table = (JTable) e.getSource();
int index = table.rowAtPoint(pClicked);
if (index == -1){
table.clearSelection();
}
} else if (e.getComponent() instanceof JList){
Point pClicked = e.getPoint();
JList<?> list = (JList<?>) e.getSource();
int index = list.locationToIndex(pClicked);
Rectangle rec = list.getCellBounds(index, index);
if (rec==null || !rec.contains(pClicked)){
list.clearSelection();
}
}
}
}
没问题。如果有人需要我的答案,我已经发布了,因为我没有找到。
@Override
public void mouseReleased(MouseEvent e) {
super.mouseReleased(e);
if (! isIntervalSelectionMode(e)){
clearselection(e);
}
}
public boolean isIntervalSelectionMode (MouseEvent e){
boolean isIntervalSelection = false;
if (e.getComponent() instanceof JTable){
isIntervalSelection = ((JTable)e.getSource()).getSelectionModel().getSelectionMode()
!= ListSelectionModel.SINGLE_SELECTION;
}else if (e.getComponent() instanceof JList){
isIntervalSelection = ((JList<?>)e.getSource()).getSelectionModel().getSelectionMode()
!= ListSelectionModel.SINGLE_SELECTION;
}
return isIntervalSelection;
}