想要使用可滚动的JTextArea,但它不起作用

时间:2014-05-23 10:21:22

标签: java swing jscrollpane jtextarea grouplayout

尝试使用可滚动创建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的专家,所以请 请帮我搞清楚

1 个答案:

答案 0 :(得分:0)

也许尝试更改此行:

.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)))添加您的scrollPane时,您已经删除了文本区域。

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