簡體   English   中英

當USER選擇JComboBox中的項目時,如何創建一個觸發器

[英]How do I make a listener that fires when the USER selects an item in a JComboBox

我正在尋找一個僅在用戶(使用該程序的用戶)選擇JComboBox的項目時JComboBox觸發的偵聽器。 我不想使用ActionListenerItemListener因為當我通過程序選擇項目時,它們也會觸發。 而且我也不能使用MouseListener ,因為它只在我單擊JComboBox時觸發,而不是在我選擇項目時觸發。

我想知道最簡單的方法是什么? 目前,我的解決方案很混亂。 當我通過代碼更改jcombobox的選定項目時,我將標志設置為true。 在我的動作監聽器中,只有在標志為false時才會執行。

A)我建議您在以編程方式執行選擇時臨時刪除偵聽器。

B)如果您的程序更改不是另一個GUI事件的影響,您可以使用以下丑陋/非健壯/容易出錯/“hacky”方式解決它:檢查EventQueue.isEventDispatchThread()以查明是否觸發了點擊GUI線程(用戶)。

C) (哎呀我只是重新閱讀你的問題,看到你已經發現了下面描述的方法。基本上我會說這個(或上面描述的方法)是你最好的選擇。)

另一種選擇是使用一個名為nonUserSelection的布爾標志,在以編程方式選擇值並在之后重置為false之前將其設置為true。 在動作監聽器中,您只需添加一個

if (nonUserSelection)
    return;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM