Передача данных между JFrames - PullRequest
0 голосов
/ 17 марта 2019

У меня есть JFrame 1, который показывает JLabel "Баланс" - остаток на моем банковском счете и 2 JButton компоненты (Добавить доход; Добавить расходы).Нажав одну из этих кнопок, я скрываю основной фрейм и открываю фрейм доходов и расходов, куда добавляю данные.

После того, как я ввел суммы в JTextField компоненты и нажал кнопку «Сохранить», в диалоговом поле я вижу, что моя запись была сохранена, но когда я нажимаю кнопку «Назад», метка «Баланс» остается 0как будто ничего не было введено.

Может ли кто-нибудь мне помочь?Мой код сейчас беспорядок, поэтому я сомневаюсь, что это будет полезно.

1 Ответ

0 голосов
/ 17 марта 2019

Вот простой пример, где я пытался восстановить вашу программу:

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

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

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

Frame2:

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

Если у вас естьлюбые дополнительные вопросы, не стесняйтесь задавать!

(Но, между прочим, в своих следующих вопросах опубликуйте некоторый код, чтобы другие люди могли помочь вам лучше. Даже если это беспорядок, другие люди могут помочь вам сэто также даст вам подсказки, что вы могли бы улучшить или как вы могли бы написать свой код чище ^^)

...