2012-11-06 73 views
2

好吧,第一次问一个问题,通常我可以找到这些类型的答案快速搜索,这只是让我太沮丧。 这是一个简单的小程序,需要几小时的工作和支付率才能获得总额和净工资,其中大部分仅仅是我的试运行(净收入等金额),但在我走之前,我想让它工作。actionperformed点击按钮时按下

按下按钮时没有任何反应,不完全确定原因。 (最近,当我尝试这个 - 并且 - 我开始在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)); 

    } 
} 

回答

3

你遮蔽你的变量 - 在类的init()方法重新声明它们,这样所有的类JTextFields将不被初始化,因此是无效。解决方案:不要这样做。

所以改成这样:

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); 
+0

完美!谢谢一堆 – user1801794

+0

@ user1801794:不客气。 –

0

你永远不会初始化JLabelslblGrossPaylblNetPay导致NPE。你应该有:

lblGrossPay = new JLabel(); 
lblNetPay = new JLabel(); 
+0

噢!我拿出了我在我的实际代码中注释出来的内容,这其中的一个,谢谢!不知道为什么我评论它开始! – user1801794