如何使用jtable在JAVA中创建一个简单的电子表格?

如何使用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")) {

我很难使用jtable在Java中制作一个简单的电子表格这里是我的输出

余额应为14750-250,即14500。但是这个项目又回到了-500,我不明白

我试图调整我的代码,但我只是倾向于把一切搞砸。以下是与余额相关的代码。 需要注意的是,我使用mysql访问数据库中的数据

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,那么金额应该是负数。