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

时间:2016-02-15 14:02:28

标签: java swing jscrollpane jtextarea

我对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;
}

}

由于

1 个答案:

答案 0 :(得分:2)

如果您要使用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;
}

现在,您的文本区域将填充框架,当文本占用的空间超过可用空间时,将显示滚动条。

希望有所帮助:)