給JList每個Item加個圖標

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class JListDemo5 {

	public JListDemo5(){
		String[] s = {"美國","日本","中國","英國","法國"};
		JFrame jf = new JFrame();
		Container contentPane = jf.getContentPane();
		JList list = new JList(s);
		list.setBorder(BorderFactory.createTitledBorder("你喜歡哪個國家?"));
		list.setCellRenderer(new CellRenderer());
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		list.setVisibleRowCount(3);
		
		contentPane.add(new JScrollPane(list));
		jf.pack();
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String...args){
		new JListDemo5();
	}
}

//class CellRenderer to design icon on every list item
class CellRenderer extends JLabel implements ListCellRenderer{

	CellRenderer(){
		setOpaque(true);//設置不透明,顯示反白效果
	}
	@Override
	public Component getListCellRendererComponent(JList list, Object value,
			int index, boolean isSelected, boolean cellHasFocus) {
		if(value!=null){
			setText(value.toString());
			setIcon(new ImageIcon(".\\Icons\\home.jpg"));
		}
		if(isSelected){
			this.setBackground(list.getSelectionBackground());
			this.setForeground(list.getSelectionForeground());
		}
		else{
			this.setBackground(list.getBackground());
			this.setForeground(list.getForeground());
		}
		
		return this;
	}
	
}


摘自:深入淺出Java Swing程序設計

你可能感兴趣的:(java,swing)