JFrame JPanel обновление / обновление / перекраска - PullRequest
0 голосов
/ 19 сентября 2018

Редактировать: при перетаскивании границ отправляется какое-то обновление, мне нужно выяснить это и вручную отправить то же самое обновление.

  • Обратите внимание, что я пытался использовать revalidate () иrepaint ().

При использовании JFrame и JPanel для отображения рамки я пытаюсь сделать так, чтобы размер рамки легко изменялся.

Что япопытка сделать это - переключиться, чтобы я мог переключаться между «маленьким представлением» и «большим представлением».

Однако при отображении содержимого панели появляется белая полоса:

  • открытая рамка ... (по умолчанию большой размер)
  • установлен на маленький размер
  • установлен на большой размер
  • установлен на маленький размер (это когда появляется белая полоса) (см. комментарии в основном методе)

Вот изображение белой полоски, которая появляется в нижней части содержимого на рамке: white bar bottom of game

Кроме того, большое примечание состоит в том, что белая полоса исчезает и перезагружается / обновляетсяПравильно ли отображается содержимое при перетаскивании границы (даже если вы перетаскиваете ее только на небольшое количество)

public class FrameTest {
    private static FrameTest instance;

    JFrame clientFrame

    JPanel client_panel;

    private void openFrames() {
            JclientFrame = new JFrame("727 Deob");
            clientFrame.setLayout(new BorderLayout());
            client_panel = new JPanel();
            client_panel.setLayout(new BorderLayout());
            client_panel.add(new Applet());
            client_panel.setPreferredSize(new Dimension(765, 555));
            clientFrame.getContentPane().add(client_panel, BorderLayout.PAGE_END);
            clientFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            clientFrame.pack();
            clientFrame.setVisible(true);
    }

    public static void main(String[] args) {
       instance = new FrameTest();
       instance.openFrames();

       instance.setDimensions(true); //works absolutely fine!
       instance.setDimensions(false); //continues to work absolutely fine!
       instance.setDimensions(true); //now the white bar at the bottom appears


    }


    public void setDimensions(boolean smallType) {
        int width = 765;
        int height = smallType ? 530 : 577;
        clientFrame.setSize(width, height);

        //tried using revalidate() and repaint() here on the frame, the frame contents AND the panel... NO LUCK, white bars still aren't fixed.
    }


}

1 Ответ

0 голосов
/ 19 сентября 2018

Поскольку Frame добавлен в Panel, попробуйте вызвать validate () на панели.

...