如何使用jtable在JAVA中创建一个简单的电子表格?
我很难使用jtable在Java中制作一个简单的电子表格这里是我的输出 余额应为14750-250,即14500。但是这个项目又回到了-500,我不明白 我试图调整我的代码,但我只是倾向于把一切搞砸。以下是与余额相关的代码。 需要注意的是,我使用mysql访问数据库中的数据如何使用jtable在JAVA中创建一个简单的电子表格?,java,swing,user-interface,jtable,Java,Swing,User Interface,Jtable,我很难使用jtable在Java中制作一个简单的电子表格这里是我的输出 余额应为14750-250,即14500。但是这个项目又回到了-500,我不明白 我试图调整我的代码,但我只是倾向于把一切搞砸。以下是与余额相关的代码。 需要注意的是,我使用mysql访问数据库中的数据 private void setBalance(int balance, int amount, String type) { if(type.equalsIgnoreCase("expense")) {
private void setBalance(int balance, int amount, String type) {
if(type.equalsIgnoreCase("expense")) {
balance = getBalance() - amount;
}
else if(type.equalsIgnoreCase("deposit")) {
balance = amount;
}
else{
balance = getBalance() + amount;
}
this.balance = balance;
}
public int getBalance() {
return balance;
}
//constructor for my transaction class
public Transaction(int transactionID, String transactionDetails, String transactionType, String purpose, int amount, Date date) {
this.transactionID = transactionID;
this.transactionDetails = transactionDetails;
this.transactionType = transactionType;
this.purpose = purpose;
this.amount = amount;
this.date = date;
setBalance(getBalance(), amount, transactionType);
}
下面是我将值添加到表中的代码
public void showTable() {
ArrayList<Transaction>list = transactionList();
DefaultTableModel model = (DefaultTableModel) table.getModel();
Object row[] = new Object[7];
for(int i = 0; i < list.size(); i++) {
row[0] = list.get(i).getTransactionID();
row[1] = list.get(i).getDate();
row[2] = list.get(i).getTransactionDetails();
row[3] = list.get(i).getTransactionType();
row[4] = list.get(i).getPurpose();
row[5] = list.get(i).getAmount();
if(i == 0) {
row[6] = list.get(i).getBalance();
}
else {
row[6] = list.get(i).getBalance() - list.get(i-1).getBalance(); //in order to retrieve the previous balance
}
model.addRow(row);
}
}
public void showTable(){
ArrayListlist=transactionList();
DefaultTableModel=(DefaultTableModel)table.getModel();
对象行[]=新对象[7];
对于(int i=0;i
程序返回-500,我不明白
好的,初始余额是15000,然后是2笔交易,每笔交易应扣除250
iteration balList balDisplay
0 15000 15000 set by if(i == 0) {list.get(i).getBalance()}
1 +/-250 14750 set by else {list.get(1).getBalance() - list.get(0).getBalance}
2 250 -500 set by else {list.get(2).getBalance() - list.get(1).getBalance}
迭代balList balDisplay
如果(i==0){list.get(i).getBalance()}
1+/-250 14750由else设置{list.get(1.getBalance()-list.get(0.getBalance}
250-500由else设置{list.get(2.getBalance()-list.get(1.getBalance}
迭代0表示列表[0]
的余额最初为15000
迭代1表示列表[1]
的余额最初为+250或-250,显示值为14750(15000-250)。计算是list.get(1.getBalance()-list.get(0.getBalance)
- 假设为+250,计算得出-14750
- 假设是-250,计算得出-15250
由于显示器显示14750,因此必须显示计算出的金额,但反向显示(金额*-1),这不包括在显示的代码段中
迭代2:从1开始,我们可以假设列表[2]
的余额最初为+250,balDisplay应为0(250-250),但为-500
现在我们可以从头开始,假设初始余额实际上是-15000,根据1等中的推理显示为+15000
鉴于现有信息,我可以在合理的时间内提供这些信息。分析表明,第3行显示的余额应为零,但为-500。没有任何东西可以解释这一点。另一方面,基于同样的推理,余额也不可能是14500
最可疑的是list.get(i).getBalance()-list.get(i-1).getBalance()
。为什么要从另一个余额中扣除一个余额,而不是从某个余额中扣除一个金额。还有,为什么要从后一个(i)余额中扣除前一个(i-1)余额 也许有帮助。你试过这个东西了吗?我试过了,但还是没有用:CI试着在某种程度上把这个东西分开,得出的结论是没有任何迹象表明,显示的值应该是14500。它表明,它应该是零,而实际上它是-500。但这可能会提供进一步的提示。最好知道列表
中实际包含哪些值(我建议将其重命名为交易
,并在之后对其进行更改)。首先,我必须澄清,当且仅当交易类型为exepense时,我们才扣减余额金额。那么,您是否建议将list.get(i).getBalance()-list.get(i-1).getBalance()
替换为list.get(i).getBalance()-list.get(i-1).getAmount()
。我只是想知道。你怎么看待“14500”是不可能的结论呢?但你知道,我的直觉是:你从一个余额开始,增加或减少一个金额->下一个余额。这是我的源代码:它在zip文件中。我只是不明白为什么我的余额没有正确地显示出来。我正确地设置了get和set方法,条件是如果type是expense,那么金额应该是负数。