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