setSelectedIndex(-1)不适用于JComboBox

彻底毁了

这是我的Java Swing UI代码。基本上我有2个组合框,并且我试图将两者的默认索引都设置为-1(空白)。第一个setSelectedIndex(-1)工作正常,但第二个工作不正常。ActionListener第一个有关吗?但是将其向下移动也不起作用。

public Panel(JFrame parent) {
    this.setBounds(0, 0, 0, 0);
    this.setBorder(new EmptyBorder(5, 5, 5, 5));
    this.setLayout(null);

    ...     

    // This is working
    fstCB = new JComboBox(SomeEnum.values());
    fstCB.setSelectedIndex(-1);
    fstCB.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // Do something
            }
        }
    });
    fstCB.setEditable(true);
    this.add(fstCB);

    // This is not working.
    JComboBox<String> sndCB = new JComboBox<String>();
    sndCB.setSelectedIndex(-1);
    sndCB.setVisible(false);
    this.add(sndCB);

    List<String[]> rs = db.select("SELECT smth FROM table", 1);
    for (String[] r : rs) {
        sndCB.addItem(r[0]);
    }

    JCheckBox chckbx = new JCheckBox("Check here");
    chckbx.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (chckbx.isVisible()) {
                chckbx.setVisible(false);
            } else {
                chckbx.setVisible(true);
            }
        }
    });
    this.add(chckbx);

}

提前致谢。

彼德

快速浏览一下,问题似乎出在您设置索引时,而不是听众的使用情况上

在您提供的代码中,JComboBox在设置索引之前有问题,因为该索引中没有任何项目。然后从结果集中添加项目时,它将恢复为选择第一个项目的默认行为

我在下面添加了一个简单的示例来突出显示这一点

enum SomeEnum{
        One, Two, Three;
    }

public static void main(String[] args){
    JFrame frame = new JFrame();
    JComboBox prePopulatedComboBox = new JComboBox(SomeEnum.values());
    prePopulatedComboBox.setSelectedIndex(-1);

    JComboBox postPopulatedComboBox = new JComboBox();
    postPopulatedComboBox.setSelectedIndex(-1);
    for(SomeEnum someEnum : SomeEnum.values()){
        postPopulatedComboBox.addItem(someEnum);
    }
    //Uncomment the below line to see the difference
    //postPopulatedComboBox.setSelectedIndex(-1);

    JPanel panel = new JPanel(new BorderLayout(5,5));
    panel.add(prePopulatedComboBox, BorderLayout.NORTH);
    panel.add(postPopulatedComboBox, BorderLayout.SOUTH);

    frame.add(panel);
    frame.setMinimumSize(new Dimension(250,250));
    frame.setVisible(true);
}

我的建议是尝试移动:

sndCB.setSelectedIndex(-1);

到这里:

List<String[]> rs = db.select("SELECT smth FROM table", 1);
    for (String[] r : rs) {
        sndCB.addItem(r[0]);
    }
sndCB.setSelectedIndex(-1);

希望这会有所帮助,如果不能解决问题,请使用更完整的示例来更新您的问题,以阐明问题,如安德鲁(Andrew)所建议

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对于JList setSelectedIndex

来自分类Dev

UITabBarController setSelectedIndex性能降低

来自分类Dev

knnMatch不适用于K!= 1

来自分类Dev

$ 1不适用于sed

来自分类Dev

curl不适用于#

来自分类Dev

不适用于参数()

来自分类Dev

instanceof 不适用于“或”

来自分类Dev

IndexRoute 不适用于“/”

来自分类Dev

laravel 5 Schedule适用于-> cron('* * / 1 * * *'),但不适用于-> hourly()

来自分类Dev

MPI代码不适用于2个节点,但适用于1个节点

来自分类Dev

视差滚动适用于1张图像,但不适用于其他图像

来自分类Dev

编码适用于 1 而不适用于 Twitter 中使用 python 的其他列表

来自分类Dev

current_predicate / 1不适用于:-动态吗?

来自分类Dev

JSPX标记不适用于Wildfly CR1

来自分类Dev

CSS不适用于body,h1等

来自分类Dev

Runge Kutta评估不适用于1以外的步长

来自分类Dev

Form1.Show() 不适用于 asyn await

来自分类Dev

“.toFixed(1);” 不适用于我的每个功能

来自分类Dev

ImportError:适用于osx而不适用于ubuntu

来自分类Dev

测试适用于“ $ f”,但不适用于“ $ @”

来自分类Dev

“多态适用于重载,而不适用于重载”?

来自分类Dev

相机不适用于opencv,但适用于流光

来自分类Dev

“多态适用于重载,而不适用于重载”?

来自分类Dev

适用于PHP,不适用于PHPUnit

来自分类Dev

BooleanToVisibilityConverter适用于Textblock而不适用于UserControl

来自分类Dev

适用于 PHP 但不适用于脚本

来自分类Dev

OrderBy 不适用于升序,但适用于降序

来自分类Dev

重写规则适用于1-4个参数,但不适用于1个参数

来自分类Dev

重写规则适用于1-4个参数,但不适用于1个参数

Related 相关文章

热门标签

归档