JFrame JPanel刷新/更新/重新绘制

kay*_*kay 6 java swing jpanel jframe

编辑:当我拖动边框时会发送某种刷新,我需要弄清楚并手动发送相同的刷新.

  • 请注意我已尝试使用revalidate()和repaint().

当使用JFrame和JPanel来显示一个框架时,我正在努力使它框架的大小很容易变化.

我要做的是做一个开关,这样我就可以在"小视图"和"大视图"之间切换.

但是,在尝试执行以下操作时,面板内容中会出现一个白条:

  • 开架...(默认是大尺寸)
  • 设置为小尺寸
  • 再次设置为大尺寸
  • 再次设置为小尺寸(这是出现白条时)(请参阅主方法中的注释)

下面是框架内容底部出现的白条图片:白色酒吧游戏的底部

此外,一个很大的注意事项是,当您拖动边框时,白条会消失并重新加载/刷新内容(即使您只拖动了一小部分)

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


}
Run Code Online (Sandbox Code Playgroud)

小智 -1

由于Frame已添加到Panel中,因此尝试在Panel上调用validate()。