-1

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

不用管里面的代码

状态 1:图像

状态 2:图像

有 70 行!但我无法滚动到他们

有什么建议么?


我只设置了一个rowheaderView:

jScrollPane1.setRowHeaderView(codeTextArea2.getRowNumbers());

和视口视图:

jScrollPane1.setViewportView(codeTextArea2);

codeTextArea2 是扩展 JPanel 的自定义类,包含几个 JTextArea

4

1 回答 1

4

+1 HFOE 评论

不用管里面的代码

我们之所以介意里面的代码:

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

简单JPanel的类,它包含一个JTextArea具有 70 行和 20 列的单个类,每个类都通过简单的正常大小给出一个数字,append(..)并且最大化行数似乎没有改变

在此处输入图像描述

(这个对于一个完整的未调整大小的屏幕截图来说太大了)

在此处输入图像描述

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);
    }
}
于 2013-01-03T21:17:10.083 回答