【发布时间】:2014-03-04 19:00:07
【问题描述】:
我在表单上有一个 JList。当表单加载时,JList 会填充我数组中的项目。这些物品是产品,并且在产品详细信息旁边有一个“库存数量”编号。 在下面的代码中,我找到了股票编号,如果它小于 5,我希望该行以红色突出显示。
目前,如果有任何数量少于 5,我的整个 Jlist 将以红色突出显示。帮助! 我对Java很陌生,所以请尽可能简单地解释! 如果有人能解释为什么我的代码不能正常工作,那就太好了 - 我真的不明白很多“细胞渲染”的东西 - 我昨天才遇到它。
public void lowStock(){
DefaultListModel<String> list = new DefaultListModel<String>();
list = (DefaultListModel) lstProducts.getModel();
int listSize = list.getSize();
for (int i=0; i<listSize; i++){
String element = list.get(i);
int blankSpace = element.lastIndexOf(" ");
String quantity = element.substring(blankSpace).trim();
final int intQuantity = Integer.parseInt(quantity);
if (intQuantity < 5){
ListCellRenderer lstclrnd;
lstProducts.setCellRenderer(new DefaultListCellRenderer(){
//element.setBackGround(Color.red);
});
}
}
class MyListRenderer extends DefaultListCellRenderer
{
private HashMap theChosen = new HashMap();
public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected,
boolean cellHasFocus)
{
super.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus );
theChosen.put( value, "chosen" );
setBackground( Color.red );
if( theChosen.containsKey( value ) )
{
setBackground( Color.red );
}
【问题讨论】:
-
什么时候将背景设置为红色以外的颜色?
-
如果库存少于 5 个,则背景应为红色。如果有 5 个或更多库存,则背景不应为红色。
-
好的,但是你什么时候真正将背景设置为红色以外的任何东西?在我看来,无论如何您都将其设置为红色。
-
不,红色应该是唯一设置的颜色。我真的不明白代码 - 我以前从未使用过 HashMap 或 CellRenderer
-
您需要将颜色设置为红色以外的颜色,以使颜色不是红色。说真的,只需将第一个红色更改为蓝色即可了解我的意思。
标签: java swing rendering cell jlist