- 首先写一个对象
-
package com.lbl.javaeye; import javax.swing.Icon; /** * @author Administrator * list上面存放的对象 */ public class IListItemData { private String labelName; private Icon labelImage; public IListItemData() { } public IListItemData(String labelName, Icon labelImage) { super(); this.labelName = labelName; this.labelImage = labelImage; } public String getLabelName() { return labelName; } public void setLabelName(String labelName) { this.labelName = labelName; } public Icon getLabelImage() { return labelImage; } public void setLabelImage(Icon labelImage) { this.labelImage = labelImage; } }
- 自定义个Render
-
package com.lbl.javaeye; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import javax.swing.Icon; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; public class IListCellRender extends JLabel implements ListCellRenderer{ private static final long serialVersionUID = 1L; private boolean m_selected = false; public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value instanceof IListItemData){ IListItemData data = (IListItemData)value; setIcon(data.getLabelImage()); setText(data.getLabelName()); }else{ setIcon(null); setText(""); } setBackground(Color.WHITE); m_selected = isSelected; if(isSelected){ setBackground(Color.BLUE); } return this; } //重绘List中选中部分的背景 public void paintComponent(Graphics g) { Color bColor = getBackground(); Icon icon = getIcon(); g.setColor(bColor); int offset = 0; if (icon != null && getText() != null) offset = (icon.getIconWidth() + getIconTextGap()); g.fillRect(offset, 0, getWidth() - 1 - offset, getHeight() - 1); if (m_selected) { g.setColor(Color.red); g.draw3DRect(offset, 0, getWidth() - 1 - offset, getHeight() - 1, true); } super.paintComponent(g); } }
- 测试
-
package com.lbl.javaeye; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.UIManager; /** * @author Administrator * 测试效果 */ public class IList extends JFrame{ private static final long serialVersionUID = 1L; private JList list; private JScrollPane listScro; public IList(){ try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } init(); showMe(); } public void init(){ list = new JList(); list.setCellRenderer(new IListCellRender()); Vector<IListItemData> items = new Vector<IListItemData>(); IListItemData data1 = new IListItemData("第二张图片",new ImageIcon("images/file/reviewers.gif")); IListItemData data2 = new IListItemData("第三张图片",new ImageIcon("images/file/reviews_super.gif")); IListItemData data3 = new IListItemData("第四张图片",new ImageIcon("images/file/submission_history.gif")); items.add(data1); items.add(data2); items.add(data3); list.setListData(items); listScro = new JScrollPane(list); listScro.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); this.add(listScro); } public void showMe(){ this.setSize(200,400); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new IList(); } }
- 效果
带图片和文字的JList
最新推荐文章于 2021-02-26 08:50:21 发布