Java 使用的JComboBox当前值
为什么每次我在代码上单击submit按钮时,它总是给我小时字符串值?即使我的JComboBox中的项的当前值为weekly?我该如何解决这个问题 我的计算机窗口的代码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
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);
}
}
}