Java的;在第一个ComboBox中选择后更新第二个ComboBox

时间:2018-02-11 13:37:16

标签: java swing jcombobox

我一直试图掌握Java(仅仅因为:))。目前我被困在一个'计算器'上。我的目的是通过ComboBox选择一个整体主题,之后第二个ComboBox显示可以为所述主题计算哪些单位。

我的问题是第二个ComboBox没有更新,我很难找到我的疏忽。有人能够证明我出错的地方吗?

注意:unittring的术语暂时是占位符:)。

public class UserInterface implements Runnable{

    String unitstring = "Select a subject";

    @Override
    public void run() {
        JFrame frame = new JFrame("Radiation Calculator 2.0");
        frame.setPreferredSize(new Dimension(350, 250));
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        createComponents(frame.getContentPane());

        frame.pack();
        frame.setVisible(true);
    }

    public void createComponents(Container container) {
        GridLayout layout = new GridLayout(4, 2);
        container.setLayout(layout);
        JLabel subject = new JLabel("Select a subject");

        String[] subjectStrings = {"Wavelenght", "Radioactive Decay", "Radiation Dose"};
        JComboBox subjectsel = new JComboBox(subjectStrings);
        subjectsel.addActionListener(this::actionPerformed);

        JLabel unit = new JLabel("Select a unit");

        String[] unitStrings = {unitstring};

        JComboBox unitsel = new JComboBox(unitStrings);

        JLabel input = new JLabel("Select a input");
        JTextField userinput = new JTextField("");

        JButton calculate = new JButton("Calculate");
        JTextArea result = new JTextArea("");

        container.add(subject);
        container.add(subjectsel);
        container.add(unit);
        container.add(unitsel);
        container.add(input);
        container.add(userinput);
        container.add(calculate);
        container.add(result);
    }

    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox) e.getSource();
        int print = cb.getSelectedIndex();
        System.out.println(print);
        unitArray(print);
    }

    public void unitArray(int x) {
        if (x == 0) {
            unitstring = "Lambda";
        }
        if (x == 1) {
            unitstring = "Bequerel";
        }
        if (x == 2) {
            unitstring = "Gray";
        }
        System.out.println(unitstring);
        }
}

0 个答案:

没有答案