나는 ArrayList에서 데이터를 가져 오는 JList의 간단한 예제를 가지고 있지만 목록의 각 문자열 옆에 이미지를 표시하려고합니다. 아이콘과 객체를 나란히 표시하는 사용자 정의 셀 렌더러 (IconListRenderer)를 작성했습니다.이미지 및 텍스트가있는 JList : 텍스트가 ArrayList에서 오는 곳 <String>
다음은 실행중인 샘플입니다.
//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;
}
}
목록은 현재하지만 쇼 이미지?
방법이 작품을보기 . SSCCE를 게시하고 몇 분 내에 답변을 얻습니다. 당신은 일주일 전에 같은 질문을했습니다. (http://stackoverflow.com/questions/6884973/displaying-an-imageicon-in-a-jlist-that-uses-a-different-object-to-load-the-jlist). 나는 당신에게 그때 그 해답을 줄 수 있었지만 SSCCE를 올리기를 거부 했으므로 대답을 거부했다. – camickr
글쎄. SSCCE를 설치하는 것을 거부하지 않았습니다. 코드의 광범위한 양을 게시하지 않고 작은 예제를 만드는 방법을 완전히 알지 못했습니다. – Warz
그리고 그것은 SSCCE에 관한 나의 요점입니다. 코드를 단순화하는 방법을 모르는 경우 질문하는 내용을 실제로 이해하지 못합니다. 이제 StudentListener 클래스는 문제와 전혀 관련이 없으므로 잘못된 장소를 볼 때 문제를 해결할 수 없습니다. 이제 SSCCE를 만드는 방법을 알았으므로 앞으로 더 많이 볼 수있을 것으로 기대합니다. – camickr