覆盖setUI中的setIcon()方法(new BasicComboBOxUI){}

时间:2012-11-15 17:32:08

标签: java override jcombobox

我必须在JComboBox的下拉列表中设置自定义图像。我很成功地删除它(通过覆盖getWidth())但我无法用自定义图像替换箭头。这是我的代码片段以获得更好的想法。我不知道我在哪里做错了,但它在按钮部分显示了一些抬高的部分。

    cmbYear = new JComboBox();
    cmbYear.setUI(new BasicComboBoxUI(){
        protected JButton createArrowButton() {
            return new JButton() {
                private static final long serialVersionUID = 1L;
                public void setIcon(Icon defaultIcon) {
                    defaultIcon = new ImageIcon("images/dropdown_icon.png");
                    super.setIcon(defaultIcon);
                }
   //           public int getWidth() {
   //                return 0;
   //            }
            };
        }
    });

请在这里帮助我。非常感谢你的时间和建议。

1 个答案:

答案 0 :(得分:1)

您可以改写getIcon。根据需要缓存图标。

@Override
public Icon getIcon() {
  Icon defaultIcon = new ImageIcon(getClass().getResource("images/dropdown_icon.png"));
  return defaultIcon;
}