Как заставить JFrame хранить данные, а не обновлять? - PullRequest
0 голосов
/ 23 мая 2018

как вы храните информацию в jframe даже после его закрытия, чтобы открыть отдельный jframe, чтобы при повторном открытии первого jframe та же информация оставалась в списке?

Так что в основном у меня есть jFrame скнопка поиска и кнопка профиля.кнопка просмотра профиля переводит вас в другой Jframe, где хранится вся ваша «история поиска».Однако каждый раз, когда вы возвращаетесь на главную страницу и снова открываете профиль, он обновляется и снова начинается с нуля.Я хочу, чтобы кнопка снова открыла то же самое окно, а не новое окно графического интерфейса.Как я могу это сделать?

1 Ответ

0 голосов
/ 23 мая 2018

Если я правильно понял ваш вопрос, вам нужно: secondFrame.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);

Однако иметь 2 JFrames не рекомендуется.Вместо этого вы можете использовать JDialog для своего «второго кадра».

Также, если вы инициализируете его в действии вашей кнопки, слушатель не будет работать, так как каждый раз, когда нажимается кнопка, он создает новый диалог.Поэтому вы должны инициализировать его раньше.Взгляните на этот пример:

package test;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class TestFrame extends JFrame {
    private JDialog secondFrame;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new TestFrame().setVisible(true);
        });
    }

    public TestFrame() {
        super("Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new FlowLayout());
        initializeSecondFrame();

        JButton button = new JButton("Show \"Second Frame\".");
        button.addActionListener(e -> {
            secondFrame.setVisible(true);
        });
        getContentPane().add(button);
        setSize(300, 300);
    }

    private void initializeSecondFrame() {
        secondFrame = new JDialog(this);
        // When "X" button is presed, dialog does nothing.
        secondFrame.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
        secondFrame.getContentPane().setLayout(new FlowLayout());
        JTextField textField = new JTextField(10);
        secondFrame.getContentPane().add(textField);
        secondFrame.setSize(300, 300);
    }
}

Единственное, что делает кнопка, это делает диалог (который уже запущен) видимым.Теперь, если вы редактируете TextField в диалоговом окне, также называемом secondFrame, и закрываете его, а затем снова нажимаете кнопку, текстовое поле будет иметь свой текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...