Java JScrollPane内容不显示

Java JScrollPane内容不显示,java,swing,resize,jpanel,jscrollpane,Java,Swing,Resize,Jpanel,Jscrollpane,我在JPanel中有一个JTextArea,然后将其放入JScrollPane中。当包含JScrollPane的JPanel首次显示时,JScrollPane会显示,但不会显示内容。一旦调整JFrame的大小,内容就会显示出来 JTextArea area = new JTextArea(6, 20); area.setText("Some test text"); JPanel panel = new JPanel(new BorderLayout()); panel.add(area, B

我在JPanel中有一个JTextArea,然后将其放入JScrollPane中。当包含JScrollPane的JPanel首次显示时,JScrollPane会显示,但不会显示内容。一旦调整JFrame的大小,内容就会显示出来

JTextArea area = new JTextArea(6, 20);
area.setText("Some test text");

JPanel panel = new JPanel(new BorderLayout());
panel.add(area, BorderLayout.CENTER);

JScrollPane pane = new JScrollPane();
pane.setBounds(20, 20, WIDTH - 40, 300 - 40);
pane.setPreferredSize(new Dimension(WIDTH - 40, 300 - 40));
add(pane);
pane.setViewportView(panel);
这两行代码没有意义(尽管它们不是问题的原因)

第一行在使用“空布局”时使用

第二个选项在使用布局管理器时使用

它们不应该一起使用


第二种是首选的,因为您应该使用布局管理器。

在应用程序中,不同的JPanel以类似于幻灯片放映的方式进行交换。在代码中可以找到类似的内容:

panel.remove(slide1);
panel.add(slide2);
panel.repaint();
问题是第二张幻灯片slide2的所有内容都不会显示。解决办法是增加

frame.validate();
其中frame是面板的父窗口。

新建JScrollPane(面板)


我认为您需要将面板添加到滚动窗格构造函数。

它对我来说很好。也许您需要显示更多的代码,以便我们能够理解您的问题,因为我没有看到您发布的代码中的错误。也许可以显示您在JFrame中添加内容的位置,然后使其可见。添加组件后是否调用pack和setVisible(true)?最好是发一封电子邮件。还有,setBounds的业务是怎么回事?我测试了代码,似乎一切都正常哦,这只是一些我从未取出的遗留代码,但无论如何还是要感谢。@Glenn Nelson,当你发布代码时,你发布的代码应该是“精确的”您正在使用的代码我们不会花时间进行白费力气的追逐。考虑到代码约600行长,我认为不这样做是个好主意。我没有意识到问题在哪里,我认为问题在那里。我们没有要求600行代码!!!你在哪里要求一个SSCCE!!!大多数时候,问题不在你认为的地方。这就是为什么需要隔离问题的原因,这也是SSCCE的目的。或者,如果不使用CardLayout,则使用panel.revalidate()后跟panel.repaint()。不需要验证整个帧。
frame.validate();