gpt4 book ai didi

java - 简单 Java 程序的启动导致白屏暂停

转载 作者:行者123 更新时间:2023-11-30 03:37:22 25 4
gpt4 key购买 nike

我有一个简单的文本程序,正在加载带有 2 个 JPanel(主体和页脚)的 jframe,主体的文本区域和页脚的标签。我不确定我的订单是否错误或者我忘记了什么,但启动程序时出现延迟,导致它闪烁白色。这有点烦人,如果可能的话我想避免这种情况。有什么想法吗?

<小时/>

它应该是这样的,但一开始它会闪烁白色并闪烁半秒。我也尝试将框架背景设置为蓝色,但这并没有改变任何东西。

hangs here should look like this...

    JFrame frame = new JFrame("SIMPLE TEXT");
JPanel panel = new JPanel();
JTextArea textarea = new JTextArea();
JPanel footer = new JPanel();
JLabel linecol = new JLabel("line: 0 col: 0");

frame.setSize(640,480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setResizable(false);

panel.setSize(frame.getBounds().width, frame.getBounds().height);
panel.setBackground(bgColor);
panel.setForeground(fgColor);
panel.setLayout(new BorderLayout());

footer.setSize(640,20);
footer.setBackground(bgColor);
footer.setLayout(new BorderLayout());
footer.setBorder(new EmptyBorder(0,0,0,10));

textarea.setSize(400, 400);
textarea.setOpaque(false);
textarea.setForeground(fgColor);
textarea.setCaretColor(fgColor);


linecol.setForeground(fgColor);


frame.add(panel);
panel.add(footer, BorderLayout.PAGE_END);
panel.add(textarea);
footer.add(linecol, BorderLayout.LINE_END);

最佳答案

获取此frame.setVisible(true);并将其移动到屏幕构建后调用的列表命令

JFrame frame = new JFrame("SIMPLE TEXT");
JPanel panel = new JPanel();
JTextArea textarea = new JTextArea();
JPanel footer = new JPanel();
JLabel linecol = new JLabel("line: 0 col: 0");

//frame.setSize(640,480);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setLocationRelativeTo(null);
//frame.setVisible(true);
//frame.setResizable(false);

//...

frame.add(panel);
panel.add(footer, BorderLayout.PAGE_END);
panel.add(textarea);
footer.add(linecol, BorderLayout.LINE_END);

frame.setResizable(false);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

您还会发现,使用 setSize 来尝试调整组件的大小是毫无意义的(并且强烈建议不要这样做),因为框架和面板都在布局管理器的控制之下......

另请注意,setResizing 可以更改框架边框的大小,在尝试调整窗口大小和/或位置之前需要调用此函数。

已更新

根据 Andrew Thompson 的建议,您应该使用 JTextArea(int, int)向布局管理器提供大小调整提示。如果将 JTextArea 放置在 JScrollPane 中,您可能还会发现它更有用。请参阅How to Use Scroll Panes了解更多详情

关于java - 简单 Java 程序的启动导致白屏暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com