好的,第一次问一个问题通常我可以找到这些快速搜索的答案,这个让我太沮丧了。 这是一个简单的小程序,花费数小时工作和支付率来获得毛额和净工资,大部分只是我的试运行(净支付金额等),但在我继续前进之前,我想让它运作起来。
按下按钮时没有任何反应,不确定为什么。 (最近,当我尝试这个 - 并且我开始在IE中获得NullPointerException时,可能与我的问题无关,但也只是把它扔出去。)任何帮助表示赞赏,我已经尝试了一些东西,但我肯定生锈的java!
继承人代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ButtonGrossPay extends JApplet implements ActionListener
{
private JTextField txtHourWork;
private JTextField txtHourRate;
private JLabel lblGrossPay;
private JLabel lblNetPay;
public void init () {
Container content_pane = getContentPane ();
content_pane.setLayout (new FlowLayout ());
JLabel lblHourWork = new JLabel("Hours Worked");
JTextField txtHourWork = new JTextField(10);
JLabel lblHourRate = new JLabel("Pay Rate");
JTextField txtHourRate = new JTextField(10);
JButton btnCalculate = new JButton("Calculate Pay");
btnCalculate.addActionListener(this);
content_pane.add (lblHourWork);
content_pane.add(txtHourWork);
content_pane.add(lblHourRate);
content_pane.add(txtHourRate);
content_pane.add(btnCalculate);
content_pane.add(lblGrossPay);
content_pane.add(lblNetPay);
}
public void actionPerformed (ActionEvent event) {
String firstNumber = txtHourWork.getText();
String secondNumber = txtHourRate.getText();
int number1 = Integer.parseInt(firstNumber);
int number2 = Integer.parseInt(secondNumber);
int gross = number1 * number2;
double netPay = 0;
if (gross >= 0 && gross <= 99.99) {
netPay = gross - gross * .10;
} else if (gross >= 99.99) {
netPay = gross - gross * .20;
}
lblGrossPay.setText(Integer.toString(gross));
lblNetPay.setText(Double.toString(netPay));
}
}
答案 0 :(得分:3)
您正在隐藏变量 - 在类的init()
方法中重新声明它们,以便所有类JTextField都不会被初始化,因此为null。解决方案:不要这样做。
所以改成它:
public void init () {
Container content_pane = getContentPane ();
content_pane.setLayout (new FlowLayout ());
JLabel lblHourWork = new JLabel("Hours Worked");
// JTextField txtHourWork = new JTextField(10);
JLabel lblHourRate = new JLabel("Pay Rate");
// JTextField txtHourRate = new JTextField(10);
txtHourWork = new JTextField(10);
txtHourRate = new JTextField(10);
答案 1 :(得分:0)
您永远不会初始化导致JLabels
的{{1}} lblGrossPay
或lblNetPay
。你应该:
NPE