给列表框设置图标
package com.swing01.mingrisoft.jlist;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
//标识可用作“橡皮图章”以绘制 JList 中单元格的组件
public class ImageListCellRenderer implements ListCellRenderer {
    @Override
    //返回已配置用于显示指定值的组件
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        //  为列表中的项构造默认渲染器对象。
        DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
        //标签
        JLabel renderer = (JLabel) ListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        /**
        *
        * instanceof是Java的一个二元操作符,和==,>,<是同一类东西。
        * 由于它是由字母组成的,所以也是Java的保留关键字。
        * 它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
        * 可以用在继承中的子类的实例是否为父类的实现
        * */
        if (value instanceof Object[]) {
            //将列表项转换成对旬数组
            Object values[] = (Object[]) value;
            //为标签设置图标
            renderer.setIcon((Icon) values[0]);
            //为标签设置文本信息
            renderer.setText((String) values[1]);
        }
        return renderer;
    }
}
package com.swing01.mingrisoft.jlist;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
public class ImageList extends JFrame {
   
    /**
    *
    */
    private static final long serialVersionUID = 8093988259425885523L;
    private JPanel contentPane;
    private JList list;
   
    /**
    * Launch the application.
    */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ImageList frame = new ImageList();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
   
    /**
    * Create the frame.
    */
    public ImageList() {
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowActivated(WindowEvent e) {
                do_this_windowActivated(e);
            }
        });
        //标题
        setTitle("带图标的列表");
        //关闭
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //大小及位置
        setBounds(100, 100, 450, 300);
        //面板容器
        contentPane = new JPanel();
        //面板容器边框
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        //面板容器布局格式
        contentPane.setLayout(new BorderLayout(0, 0));
        //将面板容器添加到我们的窗体中
        setContentPane(contentPane);
        //滚动条
        JScrollPane scrollPane = new JScrollPane();
        ///添加滚动条
        contentPane.add(scrollPane, BorderLayout.CENTER);
        //列表
        list = new JList();
        //列表字体
        list.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        //给滚动条添加列表
        scrollPane.setViewportView(list);
    }
   
    protected void do_this_windowActivated(WindowEvent e) {
        //对象数组二维
        Object[][] data = new Object[4][2];
        //图标
        data[0][0] = new ImageIcon("image/1.png");
        data[1][0] = new ImageIcon("image/2.png");
        data[2][0] = new ImageIcon("image/3.png");
        data[3][0] = new ImageIcon("image/4.png");
        data[0][1] = "《Java从入门到精通(第2版)》";
        data[1][1] = "《PHP从入门到精通(第2版)》";
        data[2][1] = "《Visual Basic从入门到精通(第2版)》";
        data[3][1] = "《Visual C++从入门到精通(第2版)》";
icon图标库        //列表数据
        list.setListData(data);
        ////标识可用作“橡皮图章”以绘制 JList 中单元格的组件
        ListCellRenderer renderer = new ImageListCellRenderer();
        //设置用于绘制列表中每个单元的委托
        list.setCellRenderer(renderer);
       
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。