Java 使用的JComboBox当前值

Java 使用的JComboBox当前值,java,swing,user-interface,handler,jcombobox,Java,Swing,User Interface,Handler,Jcombobox,为什么每次我在代码上单击submit按钮时,它总是给我小时字符串值?即使我的JComboBox中的项的当前值为weekly?我该如何解决这个问题 我的计算机窗口的代码 public class ComputeWindow extends JFrame{ private JLabel payRate,employeeID,payType,gWage; private JTextField empRate,idTxt,gWageTxt; priva

为什么每次我在代码上单击submit按钮时,它总是给我小时字符串值?即使我的JComboBox中的项的当前值为weekly?我该如何解决这个问题

我的计算机窗口的代码

public class ComputeWindow extends JFrame{

        private JLabel payRate,employeeID,payType,gWage;
        private JTextField  empRate,idTxt,gWageTxt;
        private JComboBox rateChooser;
        private JPanel panel;
        private JButton generate;

        public ComputeWindow(){

            super("Gross Wage");
            setSize(300, 150);
            setLocationRelativeTo(null);
            setVisible(true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);


            String[] employeeType = {"Hourly","Bi Weekly","Weekly","Base"};

            employeeID = new JLabel("Employee ID: ");
            payRate  = new JLabel("Employee Rate: ");
            payType = new JLabel("Pay Type: ");
            gWage = new JLabel("Gross Wage");
            empRate = new JTextField(10);
            idTxt = new JTextField(10);
            gWageTxt = new JTextField(10);
            generate = new JButton("Compute!");
            rateChooser = new JComboBox(employeeType);
            panel = new JPanel(new GridLayout(5,1));

            panel.add(employeeID);
            panel.add(idTxt);
            panel.add(payRate);
            panel.add(empRate);
            panel.add(payType);
            panel.add(rateChooser);
            panel.add(gWage);
            panel.add(gWageTxt);
            panel.add(generate);
            add(panel, BorderLayout.CENTER);
            String Option =(String)rateChooser.getSelectedItem();

            GenerateHandler generateHandler = new GenerateHandler();
            generate.addActionListener(generateHandler);
            generateHandler.setOption(Option);
        }   
    }
对于这里的处理程序来说是这样的

private class GenerateHandler implements ActionListener{

        String option;

        public void setOption(String option){
            this.option = option;
        }

        public void actionPerformed(ActionEvent e) {

            if(option =="Hourly"){
                JOptionPane.showMessageDialog(null,option);
            }else if(option == "Weekly"){
                JOptionPane.showMessageDialog(null,option);
            }
        }

    }

}

有什么建议吗?我该如何解决这个问题?或者它将返回或显示我的JComboBox中正在使用的当前值?

您可以按如下方式更改代码:

GenerateHandler generateHandler = new GenerateHandler(rateChooser);



上面的代码将解决您的解决方案,但这不是扩展JFrame的好做法,特别是JSomething。。。然后以构造函数的方式初始化所有内容。

那么我该如何初始化呢??或者,在会议上,正确的做法是什么(现在,它应该需要一些时间来演示。但是作为一个开始,这对于探索来说是好的。没关系,我会等待,我还不太了解GUI的,我只是刚刚开始。您将不得不用等于检查替换==检查,或者没有任何检查返回true。它们之间的区别是什么?请学习java命名约定和勾选它们
private class GenerateHandler implements ActionListener{
    JComboBox rateChooser;

    public GenerateHandler(JComboBox rateChooser){
        this.rateChooser = rateChooser;
    }

    public void actionPerformed(ActionEvent e) {
        String Option =(String)rateChooser.getSelectedItem();
        if("Hourly".equals(option)){
            JOptionPane.showMessageDialog(null,option);
        }else if("Weekly".equals(option)){
            JOptionPane.showMessageDialog(null,option);
        }
    }
}