2012-02-20 135 views
2

我有一個JList的自定義單元格渲染器,它顯示一個嵌套的JList與另一個顯示按鈕的自定義單元格渲染器。我遇到的問題是,任何用戶輸入(例如,按鈕上的鼠標點擊,滾動操作)都沒有得到處理,並且嵌套的JList變得無反應(但是每當我調整窗口大小時它仍能正常繪製)。有什麼辦法可以解決這個問題嗎?在Jlist中輸入事件處理與JList的問題

+2

渲染器不是真正的組件,它們只是繪製組件的圖像,所以是的,你是正確的,然後不會收到任何用戶事件。 – camickr 2012-02-20 04:53:17

+0

@camickr感謝您的信息。那麼是否可以將任何鍵盤/鼠標事件轉發給嵌套的JList? – JosephH 2012-02-20 05:13:23

回答

3

像camickr說的,Renderers只是描繪圖像而不是真正的組件。

一個辦法來解決這個問題是使用單立柱的JTable,而不是一個JList,在這裏你可以設置CellEditors,這真正的組件(但只有一次,該小區獲得焦點)。

但是,實際上可能更容易創建一個滾動窗格的面板,該面板監聽來自ListModel的ListData事件並根據需要添加和刪除組件。這就是我最後一次遇到這個問題時的結局,它更加優雅。

雖然如果你只有一個按鈕,JTable可能會工作得很好。