jcombobox中加图标的一个问题……

我想像qq登录那样在JCombobox前面显示图标。我实现了,但是当我把JImagedComboBox对象设置成可编辑时,图标就加不进去了,怎么样才能像qq那样呢?代码如... 我想像qq登录那样在JCombobox前面显示图标。我实现了,但是当我把JImagedComboBox 对象设置成可编辑时,图标就加不进去了,怎么样才能像qq那样呢?代码如下。package com.cn.swing;import java.awt.*;import java.util.Vector;import javax.swing.*; public class JImagedComboBox extends JComboBox { public JImagedComboBox(DefaultComboBoxModel moedl) { super(moedl); ListCellRenderer renderer = new DefaultListCellRenderer() { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); this.setIcon(new ImageIcon("lib/cu.gif")); return this; } }; this.setRenderer(renderer); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(400, 400); Vector vector=new Vector(); vector.add(1); vector.add(2); DefaultComboBoxModel model=new DefaultComboBoxModel(vector); JImagedComboBox comboBox = new JImagedComboBox(model); //comboBox.setEditable(true);//问题所处!!!!! frame.getContentPane().add(comboBox, BorderLayout.NORTH); frame.show(); }}class ImagedComboBoxItem { private Icon icon = null; ImagedComboBoxItem(Icon icon) { this.icon = icon; } public Icon getIcon() { return icon; } } 展开
 我来答
周宅伦
2011-08-19 · TA获得超过121个赞
知道答主
回答量:89
采纳率:0%
帮助的人:142万
展开全部
看源码的注释就知道原因了
JComboBox中setEditor方法:
* Sets the editor used to paint and edit the selected item in the
* <code>JComboBox</code> field. The editor is used only if the
* receiving <code>JComboBox</code> is editable. If not editable,
* the combo box uses the renderer to paint the selected item.
当设为可编辑时,根本没用到你重写的渲染器。如果想要实现你所说的功能,我觉得应该重写JComboBox的setEditor(ComboBoxEditor)方法,并且定制一个新的ComboBoxEditor。这个组件默认使用JTextField来渲染的(而你写的渲染器是默认使用JLabel),所以可能还要定制自己的继承自JTextField类,总之会相当麻烦。不知道你能不能找到更好的办法。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式