您的位置:首页 > 其它

JComboBox中根据条件改变菜单中字体的颜色

2008-05-19 15:33 507 查看
javax.swing.JComboBox下拉列表组件中的下拉列表是一个javax.swing.JList
列表,这个JList可以用在好多的地方就不多说了

如图如果想在某中特定的操作后 把某个列表中的内容颜色变为指定的颜色



在一般情况下在使用JComboBox.addItem(Object value);的时候默认的是一个Object对象即字符传对象 在java中是不允许在没有容器接收的情况下是不允许使用awt.color或是Font进行字体和颜色上的变化的

要进行此操作可以将下拉列表中的项渲染为JLabel进行颜色和字体的变化

JComboBox中进行item的渲染中使用setRender()方法将渲染器注入到组件中和JTabel,Jtree中的使用基本是类似的

以下代码作为简单的示例

package test;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Vector;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;

public class Testdemo01 extends JFrame implements ItemListener{

private JComboBox jcb;
private static Vector<Integer> iscom = new Vector<Integer>();
public Testdemo01()
{
this.setBounds(100, 100, 300, 100);
jcb = new JComboBox();
jcb.setRenderer(new jcbrender());
jcb.addItem("11111111");
jcb.addItem("222222");
jcb.addItem("333333");
jcb.setBounds(20, 20, 170, 30);
jcb.addItemListener(this);
Container c = getContentPane();
c.setLayout(null);
c.add(jcb);

}

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
new Testdemo01().setVisible(true);
}
class jcbrender extends JLabel implements ListCellRenderer{

public jcbrender()
{
this.setOpaque(true);
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
this.setText(value.toString());
if(Testdemo01.iscom.indexOf(index)!=-1)
{
this.setForeground(Color.cyan);
}else
{
this.setForeground(Color.black);
}
return this;
}

}
public void itemStateChanged(ItemEvent e) {
if(Testdemo01.iscom.indexOf(jcb.getSelectedIndex())==-1)
{
Testdemo01.iscom.add(jcb.getSelectedIndex());
}
}

}

运行后效果图

没有选择任何项之前



在选择222222后的情况



使用itemlistener的时候第一次选择1是按没有改变处理的所以如果选择1的话,1项是不会改变前景颜色的 可以根据具体的需求和操作进行扩展以满足自己的要求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐