0
A
回答
0
因此,为了为这两种情况(JList和JTable)制定解决方案,我制作了一个自定义侦听器,该侦听器将应用于有问题的列表和表格。
的listener:
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();
}
}
}
}
注意,这个效果很好SINGLE_SELECCTION
,但如果我们想用MULTIPLE_INTERVAL_SELECTION
或SINGLE_INTERVAL_SELECTION
我建议不要覆盖mouseReleased(MouseEvent e)
,因为这将是明确的选择,如果释放鼠标按键在选择范围之外。
PD:对于这最后一点,我做了如下修正:
@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;
}
相关问题
- 1. 如果没有选择任何项目,点击jquery提醒
- 2. 删除输入值,如果选项没有被点击
- 3. 如何使jList在jTable中可选择
- 4. JList找出被点击的项目
- 5. 清除选择的jList
- 6. 如何点击JList项目在JTabbedPane中打开新选项卡?
- 7. JList项目选择
- 8. 如果一个项目被点击,删除其他项目?
- 9. 如何删除JTable在java中的特定行和列的Jlist项目?
- 10. 如何在选择多个项目时清除QListView的选择?
- 11. 如果Jlist中没有选择任何内容
- 12. JList - 单击已选择的项目时取消选择
- 13. 如果选择JTable
- 14. Angular UI选择删除项目点击
- 15. 如何删除bootstrap中点击选项的轮廓选择
- 16. 如何选择项目没有jQuery的
- 17. 如果没有选择项目,则阻止用户点击浮动按钮
- 18. 如何从jlist中删除项目
- 19. 如何清除JTable中
- 20. 如何清除一个JList
- 21. JList actionlistener选择项目中的“延迟”
- 22. 如何清除选择器,如果它在xamarin表单中被选中?
- 23. DBLookupComboBox - 如何清除选定的项目?
- 24. jQuery选择框没有显示,如果没有通过点击选择
- 25. 如何获取JList中选择的项目并使用铸造
- 26. ngTagsInput - 如何清除选择结果?
- 27. 如何从JList中删除选定的项目
- 28. 如何选择JTable中的其他行,如果其中一行被选中?
- 29. 如何在另一次点击()被触发时清除点击()?
- 30. 如果没有选择选项语句
什么问题? – kleopatra
没有问题。我发布了答案,如果有人需要它,因为我没有找到它。 – giorgiline