受講している Java クラス用の GUI 給与計算機を作成しようとしています。要件は、ユーザー入力 (JComboBox を使用するもの) を取得し、週ごとの支払いを計算し、結果を JTable に追加する必要があるというものでした。ユーザーは、他の従業員の計算を続行し、終了ボタンを持つことができる必要があります。メイン クラスで GUI を作成しましたが、2 つの ActionListeners が必要です。1 つは終了するため、もう 1 つは計算して JTable に追加するためです。
私の問題は、計算 ActionListener の作業を開始すると、メイン クラスで設定した変数が認識されないことです。メインクラス名のDOT変数名(PayrollCalc.empName)を使用してそれらを公開しようとしましたが、それらを初期化しましたが、何も機能しないようです。実際の計算が最初に完了するまで、JTable への追加を開始していないため、コードは完全ではありません。誰か提案はありますか?
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class PayrollCalc {
public static void main(String[] args) {
//Declare variables used
String empName = null, entDept = null, calcdPay = null;
String[] empDept = {"Marketing","IT","Accounting","Development","Payroll","Facilities"};
String columnNames[] = {"Name","Department","Pay Check"};
String dataValues [][] = {
{empName,entDept,calcdPay}
};
double wrkHours = 0;
double empRate = 0;
double wklyPay = 0;
//Create JTable and scrollPane for output
JTable table;
JScrollPane scrollPane;
table = new JTable (dataValues,columnNames);
scrollPane = new JScrollPane(table);
//Create JFrame object with title
JFrame frame = new JFrame("Employee Payroll Calculator");
//Create combo box for department choices
JComboBox combo = new JComboBox(empDept);
JTextField nameField = new JTextField(15);
JTextField hourField = new JTextField(10);
JTextField rateField = new JTextField(10);
//Create JLables for input fields
JLabel nameLbl = new JLabel ("Name:");
JLabel hourLbl = new JLabel ("Hours:");
JLabel rateLbl = new JLabel ("Rate:");
JLabel deptLbl = new JLabel ("Department:");
//Create buttons for ActionListners
JButton exitButton= new JButton("Exit");
exitButton.addActionListener(new exitApp());
exitButton.setSize(5,5);
JButton calcButton= new JButton("Calculate");
calcButton.addActionListener(new calcApp());
calcButton.setSize(5,5);
//Create panels
Panel panel1 = new Panel();
panel1.add(nameLbl);
panel1.add(nameField);
panel1.add(deptLbl);
panel1.add(combo);
panel1.add(hourLbl);
panel1.add(hourField);
panel1.add(rateLbl);
panel1.add(rateField);
panel1.add(rateField);
Panel panel2 = new Panel();
panel2.add(calcButton);
Panel panel3 = new Panel();
panel3.add(calcButton);
panel3.add(exitButton);
Panel panel4 = new Panel();
panel4.add(scrollPane, BorderLayout.CENTER);
//creates the frame
frame.setSize(950,200);
frame.add(panel1,BorderLayout.NORTH);
frame.add(panel2);
frame.add(panel3, BorderLayout.SOUTH);
frame.add(panel4);
frame.setVisible(true);
}
//ActionListner for Exit button
static class exitApp implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
//ActionListner for Calculate button
static class calcApp implements ActionListener
{
public void actionPerformed(ActionEvent c)
{
empName = nameField.getText();
entDept = combo.getName();
wrkHours = Double.parseDouble(hourField.getText());
empRate = Double.parseDouble(rateField.getText());
wklyPay = wrkHours * empRate;
calcdPay = new Double(wklyPay).toString();
}
}
}