给列表框设置图标
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小时内删除。
发表评论