【问题标题】:Dynamic CheckBox and ComboBox动态复选框和组合框
【发布时间】:2012-05-11 08:05:11
【问题描述】:

我对动态复选框有疑问。 I want a combobox to show beside the checbox/checkboxes when one or more is selected.但是我只得到一个组合框,每当我选择一个新的复选框时,它就会四处移动。那么任何人都可以通过告诉我出了什么问题以及如何获得多个组合框来帮助我吗?

for(int i = 0; i < names.length; i++) {
        // ParameterField
        JTextField fieldParam = new JTextField();
        fieldParam.setText(names[i]);
        fieldParam.setEditable(false);
        addElement(contentPanel, fieldParam, 25, yPos, 100, 20);

        // ValueField
        JTextField fieldValue = new JTextField();
        fieldValue.setText("" + values[i]);
        fieldValue.setEditable(false);
        addElement(contentPanel, fieldValue, 160, yPos, 100, 20);

        //RadioButtonField          
        final JCheckBox checkboxes = new JCheckBox();
        checkboxes.setActionCommand(names[i]);
        checkboxes.addActionListener(this);
        addElement(contentPanel, checkboxes, 325, yPos, 100, 20);


        final int checkBoxIndex = i;
        checkboxes.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae2) {
                if (checkboxes.isSelected()) {
                    comboProcent.setEnabled(true);
                    comboProcent.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"2%", "5%", "10%"}));
                    addElement(contentPanel, comboProcent, 435, 50 + checkBoxIndex * 25, 80, 20);

                    setVisible(true);

                }

                    if (!checkboxes.isSelected()) {
                    contentPanel.remove(comboProcent);

                }

                System.out.println("checkbox is: " + checkBoxIndex);
            }
        });

        yPos = yPos + 25;
    }

【问题讨论】:

  • 这似乎是一个布局问题。在这些情况下,您必须在两者之间放置空格并尝试各种组合,以便在创建新布局时组合框不会移动,就像在您的代码中一样。
  • 出于好奇,这个“addElement”属于什么对象?

标签: java dynamic checkbox combobox


【解决方案1】:

您需要为每个复选框创建一个新的组合框实例。我认为最好的方法是根据复选框的值何时更改来更改它们的可见性。 (我以前也是这样弄的)

【讨论】:

  • 当我的复选框是动态的并且我不知道会有多少个复选框时,如何为每个复选框创建组合框实例?
  • addElement 的代码` private void addElement(Container c, Component element, int x, int y, int h, int w) { element.setBounds(x, y, h, w); c.add(元素); }`
  • 当你知道有多少个复选框时,你会发现。
【解决方案2】:

我不知道我是否理解正确,但如果你想要一个 dinamyc 组合框,你应该实现自己的 ComboBoxModel。

【讨论】:

猜你喜欢
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 2019-02-27
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多