【问题标题】:How do I create a JComboBox loop so the same combobox will appear multiple times?如何创建一个 JComboBox 循环,以便同一个组合框会出现多次?
【发布时间】:2013-05-24 01:09:31
【问题描述】:

我试图创建一个循环来在页面上多次创建这个 JComboBox。知道为什么这不起作用吗?

        String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
        JComboBox numberbox = new JComboBox(numbers); 
     for(int j = 1; j <= 12; j++){
        numberbox[j].setLocation(103,j*30);
        numberbox[j].setSize(47,26);
        numberbox[j].setSelectedIndex(1);
        numberbox[j].setBackground(Color.WHITE);
        panelForTextFields.add(numberbox[j]);
        numberbox[j].addActionListener(this);
     }

我相信它是循环部分以外的工作代码。当我用这段代码替换它时,它会打印一个可以按我想要的方式工作的 JComboBox。

        String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
        JComboBox numberbox = new JComboBox(numbers); 
        numberbox.setLocation(103,30);
        numberbox.setSize(47,26);
        numberbox.setSelectedIndex(1);
        numberbox.setBackground(Color.WHITE);
        panelForTextFields.add(numberbox);
        numberbox.addActionListener(this);

我在 Eclipse 中收到的错误是“表达式的类型必须是数组类型,但它解析为 JComboBox”

【问题讨论】:

    标签: java swing user-interface jcombobox


    【解决方案1】:

    我在 Eclipse 中收到的错误是“表达式的类型必须是数组类型,但它解析为 JComboBox”

    是的,numberbox 变量未声明为数组,但您尝试将其用作数组,因此 Java(不是 Eclipse)正确地告诉您不能这样做。首先将变量声明为一个数组(或者最好是 ArrayList&lt;JComboBox&gt;),然后在 for 循环中创建 each JComboBox。此外,使用布局管理器并避免组件的绝对定位。

    即,

    String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
    JPanel myGridLayoutUsingJPanel = new JPanel(new GridLayout(0, 1));
    JComboBox[] combos = new JComboBox[MAX_COMBOS]; // MAX_... is a constant
    for (int i = 0; i < combos.length; i++) {
      combos[i] = new JComboBox(numbers);
      combos[i].addActionListener(someActionListener);
      myGridLayoutUsingJPanel.add(combos[i]);
    }
    
    // add myGridLayoutUsingJPanel to the GUI...
    

    【讨论】:

      【解决方案2】:

      您正在更新循环中的同一个 JCombobox。您还需要在 te 循环中执行 new 来创建和添加不同的 JCombbox。这是更新的代码:

       String[] numbers = {"1","2","3","4","5","6","7","8","9","10"};
       JComboBox numberbox = null;
       for(int j = 1; j <= 12; j++){
          numberbox = new JComboBox(numbers); 
          numberbox.setLocation(103,j*30);
          numberbox.setSize(47,26);
          numberbox.setSelectedIndex(1);
          numberbox.setBackground(Color.WHITE);
          panelForTextFields.add(numberbox);
          numberbox.addActionListener(this);
       }
      

      【讨论】:

      • 您需要numberbox = new ... 而不仅仅是new
      • 还有一点,你不能做numberbox[j],numberbox 不是数组。
      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2020-05-03
      • 2016-08-26
      相关资源
      最近更新 更多