java - 关于JList中的Renderer获取问题。当根据索引index值设置显示的文本内容时,文本显示全都一样。
阿神
阿神 2017-04-18 10:30:32
0
0
559

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

代码如下:

@Override public Component getListCellRendererComponent(JList 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图:

谢谢了。

阿神
阿神

闭关修行中......

reply all (0)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!