JScrollPane并不涵盖整个JPanel

时间:2013-01-03 18:10:59

标签: java swing jscrollpane

我不知道我是否错过了什么或者这是一个错误 我创建了一个包含多个JTextArea的面板 但滚动窗格让我只滚动到第22行。但是有70行 当我调整框架大小时,滚动窗格也会调整大小,我可以看到比仅使用滚动条向下滚动时更多的行。

不要介意内部的代码

州1:Image

州2:Image

有七十条线! 但我不能滚动到他们

有什么建议吗?

我只设置了rowheaderView:

jScrollPane1.setRowHeaderView(codeTextArea2.getRowNumbers());

viewportView:

jScrollPane1.setViewportView(codeTextArea2);

codeTextArea2是扩展JPanel并包含多个JTextArea的自定义类

1 个答案:

答案 0 :(得分:4)

+1到HFOE评论

  

别介意

中的代码

我们考虑内部代码的原因:

这似乎对我来说很好,因为我没有你的代码我模拟了我最简单的形式。

简单JPanel类,其中包含70行和20列的单个JTextArea,每个都按正常大小的简单append(..)给出一个数字,并且最大化行数似乎不会改变

enter image description here

(这个太大了,无法完全放大屏幕)

enter image description here

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class Test {

    public Test() {
        createAndShowGui();
    }

    private void createAndShowGui() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        MyPanelTextAreas panelWithTextAreas = new MyPanelTextAreas();

        JScrollPane jsp = new JScrollPane(panelWithTextAreas);
        jsp.setPreferredSize(new Dimension(500, 400));//dont want it too big 

        frame.add(jsp);

        frame.pack();
        frame.setVisible(true);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Test();
            }
        });
    }
}

class MyPanelTextAreas extends JPanel {

    JTextArea area = new JTextArea(70, 20);

    public MyPanelTextAreas() {
        setLayout(new BorderLayout());
        add(area);
        for (int i = 1; i <= 70; i++) {
            area.append((i == 1 ? "" : "\n") + i);
        }
        area.setCaretPosition(1);
    }
}