gpt4 book ai didi

java - 将 JComboBox 的初始选定索引设置为 -1 或无

转载 作者:行者123 更新时间:2023-12-01 08:54:35 24 4
gpt4 key购买 nike

我最近开始学习JComboBoxListCellRenderer并终于得到了基本的想法。但是,我无法将组合框的初始状态或初始选定项设置为 null (或将选定索引设置为 -1)。我想将其设置为 -1,以便在加载表单时不会选择任何内容,直到用户单击下拉菜单选择一个项目。

我尝试使用 comboBox.setSelectedIndex(-1)comboBox.setSelectedItem(null)

        GradeLevelDaoImpl gldi = new GradeLevelDaoImpl();
DefaultComboBoxModel gradeLevelModel = new DefaultComboBoxModel(gldi.getAllActiveGradeLevels().toArray());
jcmbGradeLevel.setModel(gradeLevelModel);
jcmbGradeLevel.setRenderer(new JComboBoxRenderer());
jcmbGradeLevel.setSelectedItem(null); //doesn't work
jcmbGradeLevel.setSelectedIndex(-1); //doesn't work

就像这样。

这是我启动表单时不断收到的信息。

enter image description here

GradeLevel 组合框仍处于选中状态。索引为 0;

这是我的渲染器。

public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
//Class value conversion to getString value using getter

if (value instanceof SchoolYear) {
this.setText("" + ((SchoolYear) value).getStart());
}
if (value instanceof GradeLevel) {

this.setText("" + ((GradeLevel) value).getGradelevel());
}
if (value instanceof PaymentTerm) {
this.setText("" + ((PaymentTerm) value).getPaymentTerm());
}
if (value instanceof FeeCategory) {
this.setText("" + ((FeeCategory) value).getFeeCategory());
}

//selection formatting
if (isSelected) {
this.setBackground(Color.YELLOW);
//this.setBackground(list.getSelectionBackground());
this.setForeground(list.getSelectionForeground());
} else {
this.setBackground(list.getBackground());
this.setForeground(list.getForeground());

}

if ((isSelected) && (cellHasFocus)) {
this.setBorder(new LineBorder(Color.black));
} else {
this.setBorder(null);
}
return this;
}

我什至尝试将index参数设置为-1。 index = -1; 没有成功。尝试了list.setSelectedIndex(-1),仍然不起作用。

有什么建议或解决方案吗?

最佳答案

您没有为渲染器设置“默认”值(或者至少您没有检查是否为null)。

请记住,这是与组件中的所有元素共享的,因此您必须配置可能在不同对象值之间更改的所有属性

public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
//Class value conversion to getString value using getter

if (value instanceof SchoolYear) {
this.setText("" + ((SchoolYear) value).getStart());
} else if (value instanceof GradeLevel) {
this.setText("" + ((GradeLevel) value).getGradelevel());
} else if (value instanceof PaymentTerm) {
this.setText("" + ((PaymentTerm) value).getPaymentTerm());
} else if (value instanceof FeeCategory) {
this.setText("" + ((FeeCategory) value).getFeeCategory());
} else {
this.setText("---");
}

//selection formatting
if (isSelected) {
this.setBackground(Color.YELLOW);
//this.setBackground(list.getSelectionBackground());
this.setForeground(list.getSelectionForeground());
} else {
this.setBackground(list.getBackground());
this.setForeground(list.getForeground());

}

if ((isSelected) && (cellHasFocus)) {
this.setBorder(new LineBorder(Color.black));
} else {
this.setBorder(null);
}
return this;
}

当该值不是您准备渲染的值之一时,这将显示 ---

关于java - 将 JComboBox 的初始选定索引设置为 -1 或无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com