Окно графического интерфейса Порядок и устранение проблемы с отображением - PullRequest
0 голосов
/ 21 марта 2011

У меня проблемы с синхронизацией того, как будет выглядеть мой графический интерфейс ...

В настоящее время у меня есть следующее в качестве основной программы

public class MainGUI extends JPanel{

private static final long serialVersionUID = 1L;

public static void main(String[] args) throws Exception {
        EventQueue.invokeLater(new Runnable() {

            public void run() {
                JFrame f = new JFrame("Firstscreen_Main");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                Firstscreen_Main gp = new Firstscreen_Main();
                // rest code
                f.setVisible(true);
            }
        });
    }
}

, где Firstscreen_Main - это класс, подобный

public class Firstscreen_Main extends JPanel implements ActionListener, ChangeListener       
{
   // code
}

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

Для этого я добавляю код Firstscreen_Main при обработке слушателя

this.removeAll();
SecondScreen second = new SecondScreen();

Это не удаляет содержимое первого экрана ....

Возможно, это связано с тем, что в диалоге должен отображаться предыдущий экран, с которого он * (unsure ? )

но как я могу полностью уничтожить первое окно и начать следующее с сохраненными данными?

Мне кажется, я не понимаю, как работают окна ... Кто-нибудь может объяснить ...

Я узнал о CardLayout, но есть ли простой способ, где я могу просто удалить все с первого экрана и создать новый?

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Попробуйте что-то вроде этого:

this.removeAll(); // Remove everything from the frame
SecondScreen second = new SecondScreen(); // Create the panel
this.add(second); // Add the panel to the frame
second.revalidate();
this.repaint();
1 голос
/ 21 марта 2011
  1. Вам необходимо вызвать утилиту на рамке, а не на панели.
  2. Ваш класс MainGUI не должен быть JPanel, тем не менее, создавая и управляя фреймами в приложении.
  3. Ваши классы не должны быть названы в том порядке, в котором они должны появляться. Что если вы решили изменить порядок, вам также не нужно менять имена. Также имена классов не должны содержать подчеркивания.
  4. Похоже, у ваших классов много обязанностей. Попробуйте разбить ваши классы на более значимые патчи. В то же время попробуйте уменьшить связь между классами.

В целом, я думаю, что перемещение элемента управления отображаемого экрана необходимо перенести в отдельный класс вместо того, чтобы каждый JPanel был открывающим и закрывающим фреймами.

0 голосов
/ 21 марта 2011

Попробуйте избавиться от первого экрана, используя this.dispose ();

Дайте мне знать, если это работает.

Привет

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