简单Java程序的启动会导致白屏暂停
我有一个简单的文本程序,正在加载带有两个JPanel(body和footer)的jframe,一个用于body的文本区域和一个用于footer的标签。我不确定我的命令是否错误,或者我忘记了什么,但我在启动程序时出现了延迟,导致程序闪烁为白色。这有点烦人,如果可能的话,我想避免这种情况。有什么想法吗简单Java程序的启动会导致白屏暂停,java,swing,jframe,Java,Swing,Jframe,我有一个简单的文本程序,正在加载带有两个JPanel(body和footer)的jframe,一个用于body的文本区域和一个用于footer的标签。我不确定我的命令是否错误,或者我忘记了什么,但我在启动程序时出现了延迟,导致程序闪烁为白色。这有点烦人,如果可能的话,我想避免这种情况。有什么想法吗 这是它应该看起来的样子,但在开始时它会眨白色的眼睛,并用手眨半秒钟。 我也试着将框架背景设置为蓝色,但这并没有改变任何事情 JFrame frame = new JFrame("SIMPLE
这是它应该看起来的样子,但在开始时它会眨白色的眼睛,并用手眨半秒钟。 我也试着将框架背景设置为蓝色,但这并没有改变任何事情
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)设为:
并将其移动到构建屏幕后调用的list命令
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
尝试调整组件的大小是毫无意义的(并且非常不鼓励),因为框架和面板在布局管理器的控制下
另外,请注意,setresizeable
可以更改框架边框的大小,在尝试调整窗口大小和/或位置之前需要调用此函数
已更新
正如Andrew Thompson所建议的,您应该使用来向布局管理器提供大小调整提示。如果将
JTextArea
放在JScrollPane
中,您可能会发现它更有用。有关更多详细信息,请参见call setvisible at end“您还将发现,使用setSize
尝试调整组件大小是毫无意义的……”从这个想法出发,最好更改JTextArea textarea=new JTextArea()代码>类似于jtextareatextarea=newjtextarea(5,30)
向布局管理器建议尺寸。@andrewhompson非常好的建议!