如何重新创建元素(SWING)?

How to recreate element (SWING)?

在我的表单中 我创建了 JSpinner 和 JComboBox 元素。根据 JComboBox 的变化,我必须使用不同的 Spinner 模型。因此,在 ComboBox 侦听器中,我编写了 spinner = new JSpinner(newModel),但它 在表单上什么也没改变 。 如何重新创建元素以查看差异?

        // Create default Spinner
        count = new JSpinner();

        // Trying to replace spinner
        product.addActionListener(e -> {
            JComboBox source = (JComboBox) e.getSource();
            String selectedItem = (String) source.getSelectedItem();
            ...
            SpinnerNumberModel numberModel = getNewNumberModel(...)
            count = new JSpinner(numberModel);
            count.setModel(numberModel);
            // repaint(); revalidate() - also don't working
        });

您不应该每次都重新分配微调器。只需更换其型号即可。您正在为您的动作侦听器分配 JSpinner 的新实例并更改其模型。但是这个新实例不是您面板的一部分并且不可见。从动作侦听器中删除 count = new JSpinner(numberModel);。并更改现有微调器的模型。