java在单击按钮时清除表

java在单击按钮时清除表,java,jtable,jscrollpane,Java,Jtable,Jscrollpane,我正在为班级编写一个抵押计算器,我让它按照我需要的方式工作,除了每次单击“计算”按钮,它将继续添加到表中,而不是清除表并显示新值。我知道我的代码可能看起来有点邋遢,我已经注释掉了一些不需要的东西,因为我还在使用它,但是你有什么建议吗 仅供参考我还是一名Java初学者,我花了20多个小时才走到这一步(我为自己感到非常自豪!)谢谢 //Import all required Packages import javax.swing.*; import javax.swing.table.*; impo

我正在为班级编写一个抵押计算器,我让它按照我需要的方式工作,除了每次单击“计算”按钮,它将继续添加到表中,而不是清除表并显示新值。我知道我的代码可能看起来有点邋遢,我已经注释掉了一些不需要的东西,因为我还在使用它,但是你有什么建议吗

仅供参考我还是一名Java初学者,我花了20多个小时才走到这一步(我为自己感到非常自豪!)谢谢

//Import all required Packages
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.text.*;
import java.awt.event.*;

public class MortgageCalculator extends JFrame implements ActionListener {


// Loan Values
double intPrincipal, interestRate, calcPayment, monthlyInterest, currentInterest, principalPaid, newBalance;

int totalMonths;

double[] loanInterest = {5.35, 5.5, 5.75}; // Yearly interest in decimal form
int[] loanTerm = {7, 15, 30}; // Total months of term
String principal;
String comboArray[] = {"7 Years at 5.35%", "15 Years at 5.5%", "30 Years at 5.75%"};
int termYears, termMonths, done, i=0, m=0, p=0;



//Set up panels
JPanel contentPanel;

//Set up labels
JLabel mortgageLabel, paymentLabel, termLabel;

//Set up buttons
JButton calculateButton, clearButton, exitButton;

//TextFields
JTextField txtMortgage = new JTextField(10);
JTextField txtPayment = new JTextField(10);

//New Text Area
JTextArea textarea = new JTextArea();

DecimalFormat df = new DecimalFormat("$###,###.00"); //Formatting the results to decimal form


//Combo Box
JComboBox loansList = new JComboBox();

DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);

//Build GUI
    public MortgageCalculator()
    {
    super();
    initializeContent();
    }

    public void initializeContent()
                {
                    this.setSize(700, 500);
                    this.setLocation(0, 0);
                    this.setContentPane(contentPanel());
                    this.setTitle("Mortgage Calculator");
                }

    public JPanel contentPanel()
                {

                    contentPanel = new JPanel();
                    contentPanel.setLayout(null);


                    //Add labels to the  panel
                    mortgageLabel = new JLabel("Mortgage:");
                    mortgageLabel.setLocation(200, 30);
                    mortgageLabel.setSize(100, 25);
                    contentPanel.add(mortgageLabel);

                    termLabel = new JLabel("Term & Rate:");
                    termLabel.setLocation(183, 55);
                    termLabel.setSize(100, 30);
                    contentPanel.add(termLabel);

                    paymentLabel = new JLabel("Monthly Payment:");
                    paymentLabel.setLocation(158, 85);
                    paymentLabel.setSize(100, 30);
                    contentPanel.add(paymentLabel);

                    //Text Fields

                    txtMortgage = new JTextField(10);
                    txtMortgage.setLocation(280, 30);
                    txtMortgage.setSize(150, 25);
                    contentPanel.add(txtMortgage);

                    txtPayment = new JTextField(10);
                    txtPayment.setLocation(280, 85);
                    txtPayment.setSize(150, 25);
                    contentPanel.add(txtPayment);


                    //Combo Box

                    loansList.addItem(comboArray[0]);
                    loansList.addItem(comboArray[1]);
                    loansList.addItem(comboArray[2]);
                    loansList.setLocation(280, 55);
                    loansList.setSize(150, 25);
                    loansList.addActionListener(this);
                    contentPanel.add(loansList);


                    //textarea.setPreferredSize(new Dimension(650, 300));


                     //JScrollPane scroller = new JScrollPane(textarea);
                     JScrollPane scroller = new JScrollPane(table);
                     contentPanel.add(scroller);
                     scroller.setSize(650,300);
                     scroller.setLocation(20, 150);


                     textarea.setLineWrap(true);

                    model.addColumn("Payment Number");
                    model.addColumn("Current Interest");
                    model.addColumn("Principal Paid");
                    model.addColumn("New Balance");



                    //Buttons
                    exitButton = new JButton("Exit");
                    exitButton.setLocation(450, 30);
                    exitButton.setSize(100, 25);
                    contentPanel.add(exitButton);

                    clearButton = new JButton("Clear");
                    clearButton.setLocation(450, 55);
                    clearButton.setSize(100, 25);
                    contentPanel.add(clearButton);


                    calculateButton = new JButton("Calculate");
                    calculateButton.setLocation(450, 85);
                    calculateButton.setSize(100, 25);
                    contentPanel.add(calculateButton);

                    //setup up buttons
                    calculateButton.addActionListener(this);
                    clearButton.addActionListener(this);
                    exitButton.addActionListener(this);


                    return contentPanel;

                }




    //Define actions performed for buttons
    public void actionPerformed(ActionEvent e)
    {

            String arg = e.getActionCommand();
            if (e.getSource() == loansList) {
                switch (loansList.getSelectedIndex()) {
                        case 0:
                                i = 0;
                                break;
                        case 1:
                                i = 1;
                                break;
                        case 2:
                                i = 2;
                                break;
                }
            }

            if (arg == "Calculate")
            {

                txtPayment.setText("");
                principal = txtMortgage.getText();
                try {
                            intPrincipal = Double.parseDouble(principal);
                            if (intPrincipal <= 0) throw new NumberFormatException();
                    }
                    catch(NumberFormatException n){
                            txtPayment.setText("Please Enter a Postive Numeric Number");
                            done = 1;
                    }
                if (done == 1)
                        done = 0;
                else {

                            interestRate = loanInterest[i];
                            termYears = loanTerm[i];
                            monthlyInterest = interestRate/(12*100); //calculates monthly interest
                            termMonths = termYears*12; //calculates term length in months
                            calcPayment = monthlyInterest*intPrincipal/(1-Math.pow((1+monthlyInterest), -termMonths)); //calculates monthly payment
                            txtPayment.setText(" " + df.format(calcPayment));

                            for (m=0; m<=totalMonths; m++) {
                                totalMonths = loanTerm[i]*12;
                                currentInterest = intPrincipal * monthlyInterest;
                                principalPaid = calcPayment - currentInterest;
                                newBalance = intPrincipal - principalPaid;
                                intPrincipal = newBalance;

                               /* printAndAppend(
                                (m+1) + "            " +
                                df.format(currentInterest) + "                        " +
                                df.format(principalPaid) + "            " +
                                df.format(newBalance) + "\n");
                                //textarea.setText(df.format(currentInterest));

                                if(intPrincipal <= 1){ break;}*/


                                // Create a couple of columns


                                model.addRow(new Object[]{m+1, df.format(currentInterest), df.format(principalPaid), df.format(newBalance)});

                                if(intPrincipal <= 1){ break;}



                            }


            }
    }

            else if (e.getSource() == clearButton)
            {
                txtMortgage.setText(""); //clear Mortgage textfield
                txtPayment.setText(""); //clear Payment textfield
                txtMortgage.requestFocusInWindow(); //move cursor back to Mortgage textfield
                loansList.setSelectedIndex(0);
            }

            else if (e.getSource() == exitButton)
                System.exit(0);
        }

    public void printAndAppend(String text) {
        textarea.append(text);
    }

    public static void main(String[] args)
    {
        new MortgageCalculator().setVisible(true);
    }

}
//导入所有必需的包
导入javax.swing.*;
导入javax.swing.table.*;
导入java.awt.*;
导入java.text.*;
导入java.awt.event.*;
公共类MortgageCalculator扩展JFrame实现ActionListener{
//贷款价值
双重本金、利息、计息、月利息、当前利息、本金补助、新余额;
整数个月;
double[]loanInterest={5.35,5.5,5.75};//十进制形式的年利息
int[]loanTerm={7,15,30};//总任期
字符串主体;
字符串组合数组[]={“7年5.35%,“15年5.5%,“30年5.75%,”;
期限年,期限月,完成,i=0,m=0,p=0;
//设立小组
JPanel内容小组;
//设置标签
JLabel mortgageLabel、paymentLabel、termLabel;
//设置按钮
JButton calculateButton、clearButton、exitButton;
//文本字段
JTextField txtMortgage=新的JTextField(10);
JTextField txtPayment=新的JTextField(10);
//新文本区
JTextArea textarea=新的JTextArea();
DecimalFormat df=新的DecimalFormat($#######,####.00”);//将结果格式化为十进制格式
//组合框
JComboBox loansList=新的JComboBox();
DefaultTableModel=新的DefaultTableModel();
JTable table=新的JTable(模型);
//构建GUI
公共抵押计算器()
{
超级();
初始化内容();
}
public void initializeContent()
{
这个。设置大小(700500);
这个.setLocation(0,0);
这个.setContentPane(contentPanel());
本条。设定所有权(“抵押计算器”);
}
公共JPanel contentPanel()
{
contentPanel=newjpanel();
contentPanel.setLayout(null);
//将标签添加到面板
mortgageLabel=新的JLabel(“抵押:”);
mortgageLabel.设置位置(200,30);
mortgageLabel.setSize(100,25);
contentPanel.add(mortgageLabel);
术语标签=新的JLabel(“术语和费率:”);
术语标签设置位置(183,55);
术语标签.设置尺寸(100,30);
contentPanel.add(术语标签);
paymentLabel=新的JLabel(“每月付款:”);
paymentLabel.设置位置(158,85);
paymentLabel.setSize(100,30);
contentPanel.add(paymentLabel);
//文本字段
txtMortgage=新的JTextField(10);
txtMortgage.setLocation(280,30);
txtMortgage.setSize(150,25);
contentPanel.add(txtMortgage);
txtPayment=新JTextField(10);
txtPayment.setLocation(280,85);
txtPayment.setSize(150,25);
contentPanel.add(txtPayment);
//组合框
loansList.addItem(组合数组[0]);
loansList.addItem(comboArray[1]);
loansList.addItem(comboArray[2]);
贷款清单。设置位置(280,55);
loansList.setSize(150,25);
loansList.addActionListener(此);
contentPanel.add(loansList);
//textarea.setPreferredSize(新尺寸(650300));
//JScrollPane scroller=新的JScrollPane(textarea);
JScrollPane scroller=新的JScrollPane(表);
contentPanel.add(滚动条);
滚动条。设置大小(650300);
滚动条。设置位置(20150);
textarea.setLineWrap(true);
型号。添加栏(“付款编号”);
模型。添加列(“当前利息”);
模型。添加栏(“已支付本金”);
模型。添加列(“新余额”);
//钮扣
exitButton=新JButton(“退出”);
exitButton.setLocation(450,30);
exitButton.setSize(100,25);
contentPanel.add(exitButton);
clearButton=新的JButton(“Clear”);
clearButton.设置位置(450,55);
clearButton.setSize(100,25);
contentPanel.add(clearButton);
calculateButton=新的JButton(“计算”);
计算按钮设置位置(450,85);
计算按钮设置大小(100,25);
contentPanel.add(calculateButton);
//设置按钮
calculateButton.addActionListener(此);
clearButton.addActionListener(这个);
addActionListener(这个);
返回内容面板;
}
//定义为按钮执行的操作
已执行的公共无效操作(操作事件e)
{
字符串arg=e.getActionCommand();
如果(例如getSource()==loansList){
开关(loansList.getSelectedIndex()){
案例0:
i=0;
打破
案例1:
i=1;
打破
案例2:
i=2;
  else if (e.getSource() == clearButton) {
     txtMortgage.setText(""); 
     txtPayment.setText(""); 
     txtMortgage.requestFocusInWindow(); 
     loansList.setSelectedIndex(0);

     model.setRowCount(0); //!! added
  }
  if (arg == "Calculate") {
  if (arg.equals("Calculate")) {
  if (arg.equalsIgnoreCase("Calculate")) {