【发布时间】:2011-09-22 05:45:07
【问题描述】:
我有几个垂直对齐的文本区域。我希望它们在输入更多文本时扩展,但要限制它们的高度。
我已尝试设置最大尺寸,但似乎被忽略了。有什么想法吗?
_recipients = new JTextArea();
_recipients.setBorder( BorderFactory.createEtchedBorder() );
_recipients.setLineWrap( true );
_recipients.setWrapStyleWord( true );
_recipients.setMaximumSize( new Dimension( 111, 55 ) );
_subject = new JTextArea();
_subject.setBorder( BorderFactory.createEtchedBorder() );
_subject.setLineWrap( true );
_subject.setWrapStyleWord( true );
_subject.setMaximumSize( new Dimension( 111, 55 ) );
//JComponent area = LAF.Area.clear( );
JPanel area = new JPanel( new GridLayout( 1, 2, 6, 0 ) );
area.setOpaque( false );
area.add( _recipients );
area.add( _subject );
add( area, BorderLayout.CENTER );
我收到建议我应该使用滚动疼痛,但这只是创建了一个不可编辑的区域
JScrollPane pain = new JScrollPane();
pain.add( _recipients );
area.add( pain );
pain = new JScrollPane();
pain.add( _subject );
area.add( pain );
编辑
不多,但是
public class TestFrame extends JFrame
{
TestFrame()
{
setSize( new DimensionUIResource( 800, 668 ) );
JPanel area = new JPanel( new FlowLayout( 0, 0, 0 ) );
Stuff thing = new Stuff();
area.add( thing );
add( area );
}
public static void main( String args[] )
{
TestFrame frame = new TestFrame();
frame.show();
}
private static class Stuff extends JComponent
{
private final JTextArea _subject;
Stuff()
{
setLayout( new BorderLayout() );
_subject = new JTextArea();
_subject.setBorder( BorderFactory.createEtchedBorder() );
_subject.setLineWrap( true );
_subject.setWrapStyleWord( true );
_subject.setSize( new Dimension( 111, 55 ) );
_subject.setMaximumSize( new Dimension( 111, 55 ) );
JPanel area = new JPanel( new GridLayout( 1, 2, 6, 0 ) );
area.setOpaque( false );
area.add( _subject );
add( area, BorderLayout.CENTER );
}
}
}
【问题讨论】:
-
“创建了不可编辑的区域”是什么意思。我想我们大多数人都发现 JScrollPane 只是解决这类问题的方法。我认为,如果您可以创建一个小型可编译运行程序 SSCCE 来显示您的问题并允许我们修改代码并帮助您找到解决方案,我们都会变得更好。
-
这不是您将组件添加到滚动窗格的方式。使用 new JScrollPane( textArea ) 或 scrollPane.setViewportView( textArea )。如需更多帮助,我们仍然需要 SSCCE,而不是几行代码!
-
@Hovercraft Full Of Eels, @camickr - 见编辑。
-
我不确定您尝试使用示例代码实现什么效果。同样,我更喜欢按照下面的示例使用 JScrollPanes。
-
听 camickr 指出你的问题。此外,您可能应该禁用滚动窗格中的水平滚动条。
标签: java swing jscrollpane jtextarea autoresize