【问题标题】:Data transfer between JFramesJFrame 之间的数据传输
【发布时间】:2019-03-16 23:11:10
【问题描述】:

我有JFrame 1 显示JLabel“余额” - 我的银行账户余额和2 JButton 组件(增加收入;增加费用)。通过单击这些按钮之一,我隐藏了主框架并打开了我添加数据的支出收入框架。

JTextField组件中输入金额并单击“保存”按钮后,在对话框中我可以看到我的记录已保存,但是当我单击“返回”按钮时,“余额”标签保持为 0 好像什么都没有已输入。

有人可以帮我吗?我的代码现在一团糟,所以我怀疑它会有所帮助。

【问题讨论】:

标签: java swing jframe data-sharing


【解决方案1】:

这是一个简单的例子,我试图重建你的程序:

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));
    }
 }

第二帧:

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;
    }
}

如果您还有其他问题,请随时提问!

(但是顺便说一句,在你的下一个问题中,发布一些代码,以便其他人可以更好地帮助你。即使它是一团糟,其他人也可以帮助你,并给你提示你可以做得更好或者你如何编写你的代码清洁器^^)

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多