JComboBox 当前使用的值

发布于 2024-12-20 20:45:54 字数 2331 浏览 3 评论 0原文

为什么每次我单击代码上的提交按钮时,它都会不断地向我提供每小时的字符串值?即使我的 JComboBox 中的项目的当前值为每周?我该如何解决这个问题?

的代码

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);
        }   
    }

我的 ComputeWindow和处理程序

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 中正在使用的当前值?

How come each time I click the submit button on my code it keeps on giving me the hourly string value? even if the item in my JComboBox has the current value of weekly? how would I fix this?

The code for my ComputeWindow

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);
        }   
    }

and for the handler here it is

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);
            }
        }

    }

}

any suggestions? on how would I fix this? or it will return or show me the current value that is being used in my JComboBox?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无敌元气妹 2024-12-27 20:45:54

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

GenerateHandler generateHandler = new GenerateHandler(rateChooser);

上面

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);
        }
    }
}

的代码将解决您的解决方案,但这不是扩展 JFrame(特别是 JSomething ...)并按照完成方式初始化构造函数中的所有内容的好习惯。

You can change your code as follows:

GenerateHandler generateHandler = new GenerateHandler(rateChooser);

and

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);
        }
    }
}

Above code will solve your solution, but this is not a good practice to extend JFrame, specially JSomething ... and initialize everything in a constructor the way it is done.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文