【问题标题】:Wanna use scrollable JTextArea ,but it does not work想使用可滚动的 JTextArea ,但它不起作用
【发布时间】:2014-07-12 15:56:54
【问题描述】:

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

这是我的代码

 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专家,所以请 请帮我弄清楚

【问题讨论】:

  • "Wanna use.." 希望看到拼写正确的短语,例如“want to”。鉴于国际受众,避免使用俚语是值得的。
  • 考虑到语法,我希望提问者不是以英语为母语的人,可能会写得最好。此外,在您评论的第一句中,没有主题。这实际上让我很难阅读评论,因为引用也类似于您的要求。作为一名国际观众,这让我更加困惑:)
  • 哦,谢谢你们的评论,对不起我的英语不好,我会改进的。

标签: java swing jscrollpane jtextarea grouplayout


【解决方案1】:

也许尝试改变这一行:

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

用这个:

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

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

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

这篇文章可能会提供与您的问题相关的 Swing 组件的更多信息:Can't a Swing component be added to multiple containers?

【讨论】:

    猜你喜欢
    • 2013-07-04
    • 2011-02-10
    • 2013-09-22
    • 2014-11-14
    • 1970-01-01
    • 2020-06-29
    • 2014-12-28
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多