-1

尝试使用可滚动创建测试区域。我在 JTextArea 上使用 ScrollPane 位不起作用我做了很多谷歌但无法解决我的问题,我看到了一些解决方案,例如 这个链接,但也无法解决我的问题

这是我的代码

 JTextArea txtrZdsxasd = new JTextArea();
txtrZdsxasd.setFont(new Font("Microsoft YaHei", Font.PLAIN, 14));
    txtrZdsxasd.setRows(8);

    txtrZdsxasd.setColumns(8);
    txtrZdsxasd.setLineWrap(true);
    txtrZdsxasd.setWrapStyleWord(true);
    JScrollPane scrollPane = new JScrollPane(txtrZdsxasd);

    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
     scrollPane.setPreferredSize(new Dimension(100,100));

我在 Eclipse 中使用 SWT 所以这是我的布局

GroupLayout groupLayout = new GroupLayout(frmThermalProcessing.getContentPane());
    groupLayout.setHorizontalGroup(
        groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                    .addGroup(groupLayout.createSequentialGroup()
                        .addComponent(txtrZdsxasd, GroupLayout.PREFERRED_SIZE, 966, GroupLayout.PREFERRED_SIZE)
                        .addGap(18)
                        .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 18,GroupLayout.PREFERRED_SIZE))
                    .addGroup(groupLayout.createSequentialGroup()
                        .addComponent(lblLocation)
                        .addGap(39)
                        .addComponent(lblFolderName))
                    .addComponent(btnBrowse)
                    .addGroup(groupLayout.createSequentialGroup()
                        .addComponent(btnNewButton)
                        .addGap(27)
                        .addComponent(lblSaveFileLocation)
                        .addGap(18)
                        .addComponent(lblUri)))
                .addContainerGap())
    );
    groupLayout.setVerticalGroup(
        groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                    .addGroup(groupLayout.createSequentialGroup()
                        .addGap(20)
                        .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                            .addComponent(lblFolderName)
                            .addComponent(lblLocation, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE))
                        .addGap(18)
                        .addComponent(btnBrowse)
                        .addPreferredGap(ComponentPlacement.RELATED)
                        .addComponent(txtrZdsxasd, GroupLayout.PREFERRED_SIZE, 283, GroupLayout.PREFERRED_SIZE)
                        .addGap(18)
                        .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                            .addComponent(btnNewButton)
                            .addComponent(lblSaveFileLocation)
                            .addComponent(lblUri)))
                    .addGroup(groupLayout.createSequentialGroup()
                        .addGap(99)
                        .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(18, Short.MAX_VALUE))
    );

我做错了什么???我不是java专家,所以请帮我弄清楚

4

1 回答 1

0

也许尝试改变这一行:

.addComponent(txtrZdsxasd, GroupLayout.PREFERRED_SIZE, 283, GroupLayout.PREFERRED_SIZE)

有了这个:

.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 283, GroupLayout.PREFERRED_SIZE)

我对组布局没有任何经验,但一般来说,如果你将一个swing组件添加到容器中,它只会停留在你最后放置的位置。因此,当您直接将 textarea 添加到布局容器中时,您可能会从 scrollPane 中删除它。

此外,当您稍后尝试添加您的滚动窗格时,.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)))您已经从其中删除了文本区域。

这篇文章可能会提供有关 Swing 组件的更多信息,与您的问题相关:不能将 Swing 组件添加到多个容器中吗?

于 2014-05-23T11:34:53.150 回答