2

最初のコンボボックスを選択すると、残りを更新する必要がありますが、コードが機能していないようです。この人たちを助けてください。これが私のコードです(私のコードは非常に長いので、エラー部分のみを記述します)。

// example code
public class GuiComponents {
  JComboBox<String> comboBox1, comboBox2, comboBox3;

  public GuiComponents() {
     .........
     .........


     String[] element1 = {"item1", "item2", "item3"};
     String[] element2 = {"item1", "item2", item3};
     String[] element3 = {"item1", "item2", "item3"};

     comboBox1.addItemListener(new ItemListener() {

        @Override
        public void itemStateChanged(ItemEvent event) {
            if(event.getStateChange() == ItemEvent.SELECTED) {
        // how do I update 2 comboboxes, upon selecting combobox1.
                    // combox2 should update as(element2) and
                    // combox3 should update as element3.
            }
        }
    });
  }  
}

前もって感謝します....

4

1 に答える 1

2

ユーザーが選択を行ったときにコンボ ボックスの値を変更する場合は、ActionListener.

ユーザーがドロップダウン リストで別の項目を選択するたびにコンボ ボックスを更新する場合 (もちろん、これは別のイベントです)、ItemListener

しかし、どちらの場合でも、プロセスは同じです...

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class ComboBoxUpdates {

    public static void main(String[] args) {
        new ComboBoxUpdates();
    }

    public ComboBoxUpdates() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JComboBox<String> cb1, cb2, cb3;

        public TestPane() {
            cb1 = new JComboBox<>(new String[]{"Click me", "Click me", "Click them"});
            cb2 = new JComboBox<>();
            cb3 = new JComboBox<>();
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            add(cb1, gbc);
            add(cb2, gbc);
            add(cb3, gbc);

            cb1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    cb2.setModel(new DefaultComboBoxModel<String>(new String[]{"item1", "item2", "item3"}));
                    cb3.setModel(new DefaultComboBoxModel<String>(new String[]{"item4", "item5", "item6"}));
                }
            });
        }    
    }
}
于 2013-10-04T03:33:17.833 に答える