【发布时间】:2019-07-11 11:45:22
【问题描述】:
我想更改我的 JComboBox 的字体大小。 但是只有未选择的项目会发生变化,就像这样:
所以我希望所选项目也是粗体。
我做了一个这样的自定义组合框类:
public class CustomComboBox extends JLabel implements ListCellRenderer {
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
JLabel label = new JLabel(){
public Dimension getPreferredSize(){
return new Dimension(200, 80);
}
};
label.setText(String.valueOf(value));
label.setFont(new Font("Serif", Font.BOLD, 30));
return label;
}
}
【问题讨论】:
-
“所以我希望选中的项目也是粗体的。” 那么..在那个代码中,它在哪里使用
isSelected的值来做不同的事情?我们期望在这个问答网站上回答一定的最低标准,它超过了上面看到的。一般提示:为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。替换数据库的硬编码数据。 -
不是您问题的答案,但是您的渲染器已经是 JLabel。不要创建新的 JLabel。这违背了使用渲染器的目的。使用渲染器的重点是每个单元可以共享相同的组件,因此在使用资源方面非常有效。每次需要渲染单元格时,您的代码都会创建一个新的 JLabel,这会浪费资源。