为什么 JScrollPane 没有出现在我的 JTextField 周围?

Why does the JScrollPane not appear around my JTextField?

我是 GUI 的新手,但我正在尝试创建一个简单版本的记事本,并希望滚动条出现在文本区域周围。但是,我不确定为什么它没有出现。

public class NutPad extends JPanel {

public static void main(String[] args) {

    JFrame frame = new JFrame("NutPad");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(new NutPad(), BorderLayout.CENTER);
    frame.setSize(500,300);
    frame.setVisible(true);
}

private NutPad() {
    add(makeTextAreaPanel());

}

private JPanel makeTextAreaPanel() {
    JPanel textAreaPanel = new JPanel();
    textAreaPanel.setSize(100,100);

    JTextArea textArea = new JTextArea(20, 60); //15,43
    JScrollPane scrollPane = new JScrollPane(textArea); 

    textAreaPanel.add(scrollPane,BorderLayout.CENTER);
    textAreaPanel.add(textArea);

    return textAreaPanel;
}

}

谢谢

如果您要使用 BorderLayout.CENTER 约束,则需要将容器的布局设置为 BorderLayout

此外,您不需要 textAreaPanel,因为您可以直接将 scrollPane 添加到 NutPad 面板中。

private NutPad() {
    setLayout(new BorderLayout());
    add(makeScrollPane(), BorderLayout.CENTER);
}

private JScrollPane makeScrollPane() {
    JTextArea textArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(textArea);

    return scrollPane;
}

现在您的文本区域将填满框架,并且当文本占用的空间超过可用空间时将出现滚动条 space。

希望对您有所帮助:)