画像と文字付きJList
4346 ワード
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;
}
}
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();
}
}