gpt4 book ai didi

java - 带有图像和文本的 JList : Where text is coming from an ArrayList

转载 作者:行者123 更新时间:2023-11-30 05:00:20 24 4
gpt4 key购买 nike

我有一个简单的 JList 示例,它从 ArrayList 获取数据,但我想在列表中每个字符串旁边显示一个图像。我编写了一个自定义单元格渲染器(IconListRenderer),它应该并排显示图标和对象。

这是一个正在运行的示例。

//Test class showing the list in a frame
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
import javax.swing.border.LineBorder;


public class Test extends JFrame{

public static void main(String[] args) {


final JFileChooser chooser = new JFileChooser();
JButton button = new JButton();
button.setText("Upload");
JFrame frame = new JFrame("My Frame");
JList list = new JList();
Map<Object, ImageIcon> icons = new HashMap<Object, ImageIcon>();
list.setBorder(new LineBorder(Color.BLACK));

ImageIcon icon = new ImageIcon("/Images/400px-Greek_uc_sigma.png");

ArrayList<String> arrayList = new ArrayList<String>();

icons.put("Name", icon);

//populate the arrayList for testing
arrayList.add("Smith");
arrayList.add("John");
arrayList.add("Bob");
arrayList.add("Kim");

frame.setSize(new Dimension(400, 400));
//set the list data
list.setListData(arrayList.toArray());
final JFrame imageFrame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


list.setCellRenderer(new IconListRenderer(icons));
frame.add(list);
frame.setVisible(true);
frame.repaint();
}



}

//IconListRenderer类

import java.awt.Component;
import java.util.Map;
import javax.swing.DefaultListCellRenderer;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;


public class IconListRenderer
extends DefaultListCellRenderer {

private Map<Object, ImageIcon> icons = null;

public IconListRenderer(Map<Object, ImageIcon> icons) {
this.icons = icons;
}

@Override
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {

// Get the renderer component from parent class

JLabel label =
(JLabel) super.getListCellRendererComponent(list,
value, index, isSelected, cellHasFocus);

// Get icon to use for the list item value

Icon icon = icons.get(value);

// Set icon to display for value

label.setIcon(icon);
return label;
}
}

列表当前显示但没有图像?

最佳答案

这并不奇怪:

  • 您使用 JList 项值作为键从图标映射中获取图标;
  • 图标映射包含一个键:“Name”
  • JList 包含“Smith”、“John”、“Bob”和“Kim”,但没有“Name”

关于java - 带有图像和文本的 JList : Where text is coming from an ArrayList<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com