簡體   English   中英

JFrames 之間的數據傳輸

[英]Data transfer between JFrames

我有JFrame 1,它顯示JLabel “余額”——我的銀行賬戶余額和 2 個JButton組件(添加收入;添加支出)。 通過單擊這些按鈕之一,我會隱藏主框架並打開我添加數據的費用收入框架。

在我將金額輸入JTextField組件並單擊“保存”按鈕后,在對話框字段中我可以看到我的記錄已保存,但是當我單擊“返回”按鈕時,“余額”標簽保持為 0,就好像沒有輸入任何內容一樣。

有人可以幫助我嗎? 我的代碼現在一團糟,所以我懷疑它會有所幫助。

這是一個簡單的例子,我試圖重建你的程序:

public class Class {
    public static void main(String[] args) {
        Frame1 frame1 = new Frame1();
        Frame2 frame2 = new Frame2();

        frame1.setChildWindow(frame2);
        frame2.setParentWindow(frame1);
    }
}

第一幀:

import javax.swing.*;

class Frame1 extends JFrame {
    private int balance = 0;
    private JLabel balanceLabel = new JLabel(String.valueOf(balance));
    private Frame2 childWindow;

    Frame1() {
        JPanel panel = new JPanel();
        panel.add(new JLabel("Balance:"));
        panel.add(balanceLabel);
        JButton balanceButton = new JButton("Balance");
        balanceButton.addActionListener(e -> {
            childWindow.setVisible(true);
            setVisible(false);
        });
        panel.add(balanceButton);
        getContentPane().add(panel);
        pack();
        setVisible(true);
    }

    void setChildWindow(Frame2 childWindow) {
        this.childWindow = childWindow;
    }

    void addBalance(int balance) {
        this.balance+=balance;
        balanceLabel.setText(String.valueOf(this.balance));
    }
 }

幀 2:

import javax.swing.*;

class Frame2 extends JFrame {
    private Frame1 parentWindow;

    Frame2() {
        JComboBox<Integer> comboBox = new JComboBox<>(new Integer[] {1,2,3,4,5,6,7,8,9});
        JButton addButton = new JButton("add");

        addButton.addActionListener(e -> {
            parentWindow.addBalance((Integer)comboBox.getSelectedItem());
            parentWindow.setVisible(true);
            setVisible(false);
        });

        JPanel panel = new JPanel();
        panel.add(comboBox);
        panel.add(addButton);
        getContentPane().add(panel);
        pack();
    }

    void setParentWindow(Frame1 parentWindow) {
        this.parentWindow = parentWindow;
    }
}

如果您還有其他問題,請隨時提問!

(但是順便說一句,在你的下一個問題中,發布一些代碼,以便其他人可以更好地幫助你。即使它是一團糟,其他人也可以幫助你解決這個問題,並給你提示你可以做得更好或你如何可以寫你的代碼更干凈^^)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM