簡體   English   中英

在Java中創建JList,如何更改條目的背景顏色?

[英]Creating a JList in Java, how would I change the background color of a entry?

好的,所以我有一個包含幾個項目的JList 我選擇一個項目,然后單擊一個按鈕。 當我單擊按鈕時,我希望該項目的背景顏色永久更改。

我已經創建了一個自定義渲染器,但我可以用它來改變整個背景的顏色,或者在選中它時更改所選項目背景的顏色。 那不是我想要的。 我試圖使用getBounds獲取Rectangle對象(所以我可以做一些像在Rectangle區域內繪制所有內容的東西?)但我甚至不知道如何開始。

我現在覺得JListCellRenderer不支持這種東西,所以我想我必須做一些事情,比如創建一個readOnly textFields系列,單獨設置它的樣式,並以某種方式將它們顯示為列表?

我真的不需要任何代碼(除非你想給出一個例子),我只是在尋找一個如何做到這一點的大方向。

抱歉,長篇文章。 謝謝!

你做了同樣的事情,但如果用戶的動作表明它應該被鎖定,那么寫出你的代碼邏輯來鎖定渲染的顏色。 關鍵在於你的代碼邏輯。 也許您想要更改正在渲染的對象的狀態,或者您可能希望更改將渲染顏色保存為值並將顯示的對象保存為鍵的Map的狀態。 我可能會選擇后者。

例如,

// ListItemType is whatever type is being displayed in your JList.
Map<ListItemType, Color> listItemBackground = new HashMap<ListItemType, Color>();
// now add each item to the JList with the default background color.
  • 您的渲染器將使用此Map來決定要繪制的背景顏色。
  • 當用戶進行選擇並使項目具有新的背景顏色時,您可以更改地圖所持有的顏色並重新繪制列表。
  • 如果要顯示其背景,請確保使渲染器不是不透明的。

暫無
暫無

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

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