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