給JList每個Item加個圖標

本文介绍了一个使用 Java Swing 的 JList 控件示例程序,展示了如何创建带图标渲染的列表,并设置了列表项的选择模式和可见行数。此示例通过自定义 CellRenderer 类来为列表中的每一项添加图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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程序設計
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值