JComboBox Текущее значение используется - PullRequest
0 голосов
/ 12 декабря 2011

Почему каждый раз, когда я нажимаю кнопку «Отправить» в моем коде, он продолжает давать мне почасовое значение строки? даже если элемент в моем JComboBox имеет текущее значение еженедельно? как бы это исправить?

код для моего 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);
        }   
    }

и для обработчика здесь это

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?

1 Ответ

2 голосов
/ 12 декабря 2011

Вы можете изменить свой код следующим образом:

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 ... и инициализировать все в конструкторе так, как это делается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...