Java JFrame,不立即显示内容,但在最小化+恢复后显示

标签 java swing

public class GUI extends JFrame implements ActionListener {
   ...//some global variables
  public GUI ()
  {
    super("Closest Word Automaton");
    this.setSize(1000, 640);
    this.setVisible(true);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setLayout(new CardLayout());

    initArray();

    JTabbedPane tabs = new JTabbedPane();
    tabs.add("Edit View", createEditView());
    tabs.add("Automaton View", createAutomatonView());
    tabs.add("Levenshtein Distance Calculator", createLevCalculator());
    this.add(tabs);

    addListener();

  }

我的 JFrame 有一个奇怪的问题,当我在 Eclipse 中运行该程序时,GUI 显示如下:http://i.imgur.com/hNtucMo.jpg这不应该发生,因为它应该是这样的:http://i.imgur.com/ph0TV3C.jpg但是,在我最小化然后恢复 Jframe 窗口后,问题自行解决。为什么会发生这种情况?我该如何修复它以在启动程序时立即正确显示 GUI?

(其他电脑也有这个问题)

最佳答案

添加所有组件后,将框架设置为可见。

public class GUI extends JFrame implements ActionListener {
   ...//some global variables
  public GUI ()
  {
    super("Closest Word Automaton");
    this.setSize(1000, 640);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setLayout(new CardLayout());

    initArray();

    JTabbedPane tabs = new JTabbedPane();
    tabs.add("Edit View", createEditView());
    tabs.add("Automaton View", createAutomatonView());
    tabs.add("Levenshtein Distance Calculator", createLevCalculator());
    this.add(tabs);

    this.pack();
    this.setVisible(true);  //setVisible to true after adding components

    addListener();
  }

注意我也调用了 this.pack()。这将导致 JFrame 的大小正确,因此其子组件的大小也正确,因此当您 setVisible(true) 时,它会正确显示。

关于Java JFrame,不立即显示内容,但在最小化+恢复后显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324687/

相关文章:

Java 将 For 更改为 While

java - 如何暂时关闭 java gwt 服务器端的缓冲读取器?

java - 如何在运行时将 JCheckBox 排列在 JTable 上方的行中,与每个单元格 x 坐标的第一行对齐?

java - Applet 和 Swing 在 Eclipse 中不显示组件

java - JLabel 随输入到 JTextArea 中的文本移动

java - 实例初始化程序可以抛出异常吗?

java - 如何在 Apache Brooklyn 中获取资源

Java for 循环评估

Java slider 循环

java - 将焦点从一个 JTree 节点转移到另一个