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