好的,所以问题在于JPanel不喜欢嵌入到JScrollPane中。
为了使组件能够使用JScrollPane“很好地播放”,它需要实现Scrollable。如果您只是将Jtextarea添加到JScrollPane中,它将完全按照您的要求工作。
无需使用JPanel来保存所有Jtextarea,您需要制作一个小的自定义类来扩展JPanel并实现Scrollable。
我已经重写了您的示例并将其粘贴到此处:http :
//pastebin.com/q9x4fv3H,以便您可以查看所有代码。Scrollable
JPanel应该如下所示:
private static class ScrollablePanel extends JPanel implements Scrollable{ public Dimension getPreferredScrollableViewportSize() { return super.getPreferredSize(); //tell the JScrollPane that we want to be our 'preferredSize' - but later, we'll say that vertically, it should scroll. } public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { return 16;//set to 16 because that's what you had in your pre. } public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { return 16;//set to 16 because that's what you had set in your pre. } public boolean getScrollableTracksViewportWidth() { return true;//track the width, and re-size as needed. } public boolean getScrollableTracksViewportHeight() { return false; //we don't want to track the height, because we want to scroll vertically. }}干杯!



