一个关于java jlist的问题 5
一个jlist对象调用setCellRenderer()方法,把每个表项都渲染成了一种显示模式,我现在想要单独改变其中一个表项的显示模式,应该怎么办?...
一个jlist对象调用setCellRenderer()方法,把每个表项都渲染成了一种显示模式,我现在想要单独改变其中一个表项的显示模式,应该怎么办?
展开
1个回答
展开全部
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.util.*;
/**
* @author Hardneedl
*/
final class CellRendererDemo extends JFrame {
public String getTitle() {return "CellRendererDemo";}
static private final Dimension size = new Dimension(600,400);
public Dimension getPreferredSize() {return size;}
public Dimension getMaximumSize() {return size;}
public Dimension getMinimumSize() {return size;}
public Dimension getSize(){return size;}
private JList jList;
private class _ListModel extends AbstractListModel{
public int getSize() {return 15;}
public Object getElementAt(int index) {
return Integer.toString(index);
}
}
private class _Renderer extends JLabel implements ListCellRenderer{
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
//依据参数,单独更改显示样式。此处仅示范
if(index==2)
setBackground(Color.RED);
else
setBackground(Color.YELLOW);
setText(value.toString());
return this;
}
public boolean isOpaque() {return true;}
}
CellRendererDemo() throws HeadlessException {
init();
attachListeners();
doLay();
}
private void init(){
jList = new JList(new _ListModel());
jList.setCellRenderer(new _Renderer());
}
private void attachListeners(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void doLay(){
final Container container = getContentPane();
container.add(new JScrollPane(jList),BorderLayout.CENTER);
pack();
setVisible(true);
}
public static void main(String...args) {
System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.invokeLater(
new Runnable(){
public void run() {
new CellRendererDemo();
}
}
);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询