Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JScrollPane的Java视图只显示了一半的时间_Java_Swing_Jscrollpane_Repaint - Fatal编程技术网

JScrollPane的Java视图只显示了一半的时间

JScrollPane的Java视图只显示了一半的时间,java,swing,jscrollpane,repaint,Java,Swing,Jscrollpane,Repaint,刚开始使用Swing,我选择了空布局,因为我来自Flash世界,习惯于指定每个像素和大小。稍后我将学习布局 现在的问题是JTextArea,它是JScrollPane的视图,只在我运行程序的一半时间出现。我无法选择它或键入它,因为它不在那里。不过,窗格在100%的时间内都会显示。如果我点击tab键几次,焦点就会落在文本区域上,然后它就会出现 我已经删除了大量与问题无关的代码。这就是为什么有些代码看起来像MenuItemSelected PathsPanel的构造函数末尾有很多重绘,因为这是我修复

刚开始使用Swing,我选择了空布局,因为我来自Flash世界,习惯于指定每个像素和大小。稍后我将学习布局

现在的问题是JTextArea,它是JScrollPane的视图,只在我运行程序的一半时间出现。我无法选择它或键入它,因为它不在那里。不过,窗格在100%的时间内都会显示。如果我点击tab键几次,焦点就会落在文本区域上,然后它就会出现

我已经删除了大量与问题无关的代码。这就是为什么有些代码看起来像MenuItemSelected

PathsPanel的构造函数末尾有很多重绘,因为这是我修复这个问题的最后一搏,因为我在许多线程中读到重绘通常会修复未显示的内容

另外,如果我注释掉重绘上方的setText,文本区域将显示得更少

计日工

public DayPlanner () {
    //win is a JFrame
    win.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
    win.setLayout (null);
    win.setResizable (false);
    win.setVisible (true);

    MenuItemSelected ("Paths");
    win.repaint ();
}

public void MenuItemSelected (String command) {
    ChangePanel (PathsPanel.class, pathsPanel);
}

private void ChangePanel (Class panelClass, Component ref) {
        activePanel = new PathsPanel (this);
        pathsPanel = (PathsPanel) activePanel;

        win.add (activePanel);
        win.repaint ();
    }
}
帕斯潘

public PathsPanel (DayPlanner parent) {
    //extends JPanel
    this.parent = parent;

    setLayout (null);
    setBounds (0, 0, 500, 500);

    txtMessages = new JTextArea ();
    txtMessages.setOpaque (true);
    txtMessages.setBackground (Color.RED);

    JScrollPane scpMessage = new JScrollPane (txtMessages, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scpMessage.setBounds (0, 0, 500, 500);

    txtMessages.setText ("AWD");
    txtMessages.repaint ();
    scpMessage.repaint ();
    repaint ();
}

我打赌这与不使用LayoutManager有关

1我打赌这与不使用LayoutManager有关!很可能。2确保所有GUI创建和更新都在EDT上完成。3为了更快地获得更好的帮助,请发布一个。当它不显示时会发生什么,一个空格?@andrewhompson您使用2是正确的。@MouseEvent它只显示JScrollPane,里面没有任何内容。在您的PathsPanel构造函数中,我看不到您在哪里添加txtMessages?