3

我在使用 JScrollPanes 和 JTextArea 对象并让它们一起工作时遇到问题。

如果我只是将 JTextArea 添加到我的 JPanel,它可以正常工作并显示在我告诉它的位置。但是,如果我将 contentPane.add(textArea) 更改为 contentPane.add(new JScrollPane(textArea)),则 textArea 不再可见,并且也没有 textarea 的迹象。

这是我的代码:

public docToolGUI() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 611, 487);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        textField = new JTextField();
        textField.setBounds(253, 323, 86, 20);
        contentPane.add(textField);
        textField.setColumns(10);

        JLabel lblEnterRootDirectory = new JLabel("Enter Root Directory");
        lblEnterRootDirectory.setBounds(253, 293, 127, 20);
        contentPane.add(lblEnterRootDirectory);

        JButton btnGo = new JButton("Go");
        btnGo.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {
                new ToolWorker().execute();
            }
        });
        btnGo.setBounds(253, 361, 89, 23);
        contentPane.add(btnGo);

        textArea = new JTextArea();
        textArea.setWrapStyleWord(true);
        textArea.setEditable(false);
        textArea.setBounds(25, 11, 560, 276);
        contentPane.add(new JScrollPane(textArea));




    }
4

2 回答 2

5

尝试使用使用 2 个 int 值的 JTextArea 的构造函数:

textArea = new JTextArea(rows, columns);

教程

JTextArea 构造函数的两个参数分别提示文本区域应显示的行数和列数。包含文本区域的滚动窗格在确定滚动窗格的大小时会注意这些提示。

编辑:上面的示例是对 LayoutManager 的提示,但我只是注意到您没有使用它。除非你有充分的理由不这样做,否则你应该这样做。

于 2012-11-07T16:59:03.590 回答
-1

这是因为您必须设置 JScrollPane 的边界,并且必须使滚动窗格而不是文本区域可见。

textArea = new JTextArea();
textArea.setWrapStyleWord(true);
textArea.setEditable(false);

JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setBounds(25, 11, 560, 276);
scrollPane.setVisible(true);

contentPane.add(scrollPane);
于 2012-11-07T16:57:21.203 回答