怎样将JCheckBox加入到JList里面



将JList里面的内容用JCheckBox表示,要调用JList里面的setCellRenderer(arg0)方法,但它里面的参数是如下类型:

ListCellRenderer<? super ListCellBaseSubjectModel>,所以你要定义一个类,它要实现ListCellRenderer这个接口,任何继承这个类的子类都可以作为arg0的参数,下面是一种方法:

package com.mec.Subject.view;

import java.awt.Color;
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

import com.mec.Subject.model.ListCellBaseSubjectModel;

public class CheckBoxListCellRenderer extends JCheckBox 
  implements ListCellRenderer<ListCellBaseSubjectModel> {
 private static final long serialVersionUID = 387467106131962455L;
 protected static Border m_noFocusBorder = new EmptyBorder(1, 1, 1, 1); 

 public CheckBoxListCellRenderer() 
 { 
  super(); 
  setOpaque(true); 
  setBorder(m_noFocusBorder); 
 }

 @Override
 public Component getListCellRendererComponent(JList<? extends ListCellBaseSubjectModel> list,
   ListCellBaseSubjectModel value, int index, boolean isSelected, boolean cellHasFocus) {
  setText(value.toString());
  setEnabled(value.isEnabled());
  setSelected(value.isSelected()); 
  setToolTipText(value.getHelpString());

  Color bkground = isSelected ? list.getSelectionBackground() : list.getBackground(); 
  bkground = isEnabled() ? bkground : value.getBackground();
  setBackground(bkground);
  
  if(list.isEnabled())
   setForeground(isSelected ? list.getSelectionForeground() : value.getForeground());
  else
   setForeground(Color.LIGHT_GRAY); 
  
  setFont(list.getFont()); 
  setBorder((cellHasFocus) ? UIManager.getBorder("List.focusCellHighlightBorder") : m_noFocusBorder);

  return this; 
 }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值