Java 为什么调用setSelectedIndex(0)后不会自动触发itemListener?

Java 为什么调用setSelectedIndex(0)后不会自动触发itemListener?,java,swing,jcombobox,jdialog,Java,Swing,Jcombobox,Jdialog,cbTexture.setSelectedIndex(0)在末尾被调用 构造函数,但它没有帮助 自动选择子文本 在它之后。为什么? public class TradeInDialog extends JDialog { public TradeInDialog(Database _db) throws SQLException { .... setupTexture(); cbTexture.addItemLis

cbTexture.setSelectedIndex(0)在末尾被调用
构造函数,但它没有帮助
自动选择子文本
在它之后。为什么?

  public class TradeInDialog extends JDialog {

    public TradeInDialog(Database _db) throws SQLException
    {
        ....     
        setupTexture();

        cbTexture.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {

                if(e.getStateChange() == ItemEvent.SELECTED) {
                    selectedTexture = cbTexture.getSelectedIndex()+1;
                    setupSubTexture();
            }
        });
          ....      

         cbTexture.setSelectedIndex(0);
    }

由于
setupSubTexture(),您在下一个元素中的问题已被默认选中cbTexture.setSelectedIndex(0)时,不执行code>method。尝试
cbTexture.setSelectedIndex(1)并且您看到它是有效的。

您必须在事件处理程序类之外调用
setupsubtext
方法,因此您的代码必须如下所示:

公共类TradeInDialog扩展了JDialog{

public TradeInDialog(Database _db) throws SQLException
{
    selectedTexture = 1;
    setupSubTexture();
    setupTexture();

    cbTexture.addItemListener(new ItemListener() {

        public void itemStateChanged(ItemEvent e) {

            if(e.getStateChange() == ItemEvent.SELECTED) {
                selectedTexture = cbTexture.getSelectedIndex()+1;
                setupSubTexture();
        }
    });

    cbTexture.setSelectedIndex(0);
}

为了更快地获得更好的帮助,请发布一个.what is
cbTexture
class?