关于JList中的Renderer获取问题。当根据索引index值设置显示的文本内容时,文本显示全都一样。

我重写ListCellRenderer类,继承JPanel。
在JPanel中添加一个JLabel用于显示list中的索引。但是设置setText(String.valueOf(index))之后显示的值都为0.如果用控制台直接输入index又是对的,请问有没有大神知道为什么,感觉涉及了内存的问题?

代码如下:

@Override

public Component getListCellRendererComponent(JList<? extends Vehicle> list, Vehicle value, int index,

boolean isSelected, boolean cellHasFocus) {

// 绘制图标

JLabel iconLabel = new JLabel();

// 绘制车位号

JLabel numLabel = new JLabel();

// 绘制车牌号,没有显示位空车位

JLabel vehicleNumber = new JLabel();

if (value.isIsInParking()) {

iconLabel.setIcon(iconNotNull);

} else {

iconLabel.setIcon(iconNull);

}

JPanel temp1 = new JPanel(new FlowLayout());

temp1.setPreferredSize(new Dimension(50, 50));

temp1.add(iconLabel);

temp1.setBackground(CellColr);

String num = new String(String.valueOf(index));

numLabel.setText(num); //显示出来为0

System.out.println(num); //正常显示0 1 2 3 4 ...

// numLabel.setText(String.valueOf(num) + "号车位");

vehicleNumber.setText(value.getLicensePlateNumber());

numLabel.setForeground(Color.orange);

vehicleNumber.setForeground(Color.orange);

numLabel.setFont(font);

vehicleNumber.setFont(font);

JPanel temp2 = new JPanel(new FlowLayout());

Box box = Box.createVerticalBox();

box.add(numLabel);

box.add(Box.createVerticalStrut(8));

box.add(vehicleNumber);

temp2.setBackground(CellColr);

temp2.add(box);

add(temp1, BorderLayout.WEST);

add(temp2, BorderLayout.CENTER);

return this;

}

BUG图:
图片描述
谢谢了。

以上是 关于JList中的Renderer获取问题。当根据索引index值设置显示的文本内容时,文本显示全都一样。 的全部内容, 来源链接: utcz.com/p/179945.html

回到顶部