Swing 区域内的垂直对齐
对于如何显示消息列表,我有一个非常具体的要求。每条消息最多可包含3200个字符。对于消息的这种特殊显示,只显示每一行的前两行,以原始格式(制表符、空格、换行符)显示消息的任何内容。消息将包含在JInternalFrame中。当用户拖动帧的一侧以增加或减少其宽度时,消息的可见文本应随帧增加或减少,不需要水平滚动条 我能够通过以下方法获得所需的行为,即文本随着框架宽度的增加/减少:Swing 区域内的垂直对齐,swing,Swing,对于如何显示消息列表,我有一个非常具体的要求。每条消息最多可包含3200个字符。对于消息的这种特殊显示,只显示每一行的前两行,以原始格式(制表符、空格、换行符)显示消息的任何内容。消息将包含在JInternalFrame中。当用户拖动帧的一侧以增加或减少其宽度时,消息的可见文本应随帧增加或减少,不需要水平滚动条 我能够通过以下方法获得所需的行为,即文本随着框架宽度的增加/减少: JTextArea ta = new JTextArea(); ta.setLineWrap(true); ta.se
JTextArea ta = new JTextArea();
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
ta.setRows(2);
ta.setEditable(false);
ta.setOpaque(false);
ta.setText(longString());
ta.setAlignmentY(TOP_ALIGNMENT);
JScrollPane scrollPane = new JScrollPane(ta);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
滚动窗格列表添加到JScrollPane中,在JInternalFrame中有一个垂直滚动条,但没有水平滚动条
我遇到的问题是,文本位于JTextArea的底部,因此用户看到的是消息的最后两行,而不是前两行。似乎可以设置水平对齐,但不能设置垂直对齐。是否有某种方法可以获取顶部文本对齐的自动展开/收缩文本 这也是过去困扰我的事情。它与JTextComponents如何与JScrollPanes交互有关——特别是,在JTextComponent的末尾有一个(不可见,不可编辑时)插入符号。当视口试图找出它应该查看的内容时,它会查看插入符号 因此,告诉JTextArea在初始化块期间不要移动插入符号:
DefaultCaret c = new DefaultCaret();
c.setUpdatePolicy( DefaultCaret.NEVER_UPDATE );
ta.setCaret( c );
将文本加载到文本区域后,您可以使用:
textArea.setCaretPosition(0);
没什么区别