【问题标题】:Have to move screen to get JTextArea to appear必须移动屏幕才能出现 JTextArea
【发布时间】:2014-06-07 13:53:39
【问题描述】:

我有一个桌面窗格程序,用户在其中输入数据,结果显示 jtextarea。而不是只有文本区域,我想将它添加到滚动窗格中,我做到了。所以我创建了一个新的滚动窗格,并将文本区域添加到其中。现在,当我输入数据时,滚动窗格中的文本区域在我移动页面之前不会出现。换句话说,一切正常,但我必须稍微移动页面才能使结果和滚动窗格显示在屏幕上。

关于为什么会发生这种情况的任何想法?

 private JTextArea matchListResults = new JTextArea();
 private JPanel matchPanelBase = new JPanel(new BorderLayout());
 private JScrollPane mResults = new JScrollPane();

    private void matchResFrame(String[] matchResultArray) throws IOException,          SQLException {

        Dimension size = new Dimension();
        size.setSize(400, 300);
        matchListResults.setPreferredSize(size);
        matchListResults.setFont(font);

。 . .

        mResults.getViewport().add(matchListResults);
        matchListResults.setVisible(true);
        matchPanelBase.add(mResults, BorderLayout.CENTER);
    }

【问题讨论】:

    标签: java swing user-interface jpanel jscrollpane


    【解决方案1】:

    当您将组件添加到可见的 GUI 时,基本代码是:

    panel.add(...);
    panel.revalidate();
    panel.repaint();
    

    默认情况下,所有组件的大小都是 (0, 0),因此没有可绘制的内容。 revalidate() 将调用布局管理器,该管理器将确定组件的大小和位置。

    【讨论】:

    • 我会尽快给这个投票。不过你是对的。面板全部设置好后,我不得不重新验证,然后重新绘制。重绘本身不起作用。非常感谢!
    【解决方案2】:

    添加新组件后,在面板上调用 repaint()。

    matchPanelBase.repaint();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多