所以,我在JPanel(BoxLayout)上有JTextArea.我也有Box填充器填充JPanel的其余部分.我需要我的JTextArea以单行高度开始(我可以管理它),并在需要时扩展和减少.
自动换行已启用,我只需要在添加/删除新行时调整它的高度.
我尝试使用documentListener和getLineCount(),但它无法识别wordwrap-newlines.
如果可能的话,我想避免弄乱字体.
而且,没有滚动面板. JTextArea必须始终完全显示.
解决方法
JTextArea具有相当特殊的副作用,在适当的条件下,它可以自行增长.当我试图设置一个简单的双行文本编辑器时(每行限制字符长度,最多两行),我偶然偶然发现了这个…
基本上,给定合适的布局管理器,这个组件可以自己增长 – 它实际上是有道理的,但让我感到惊讶……
此外,您可能希望使用ComponentListener来监视组件何时更改大小,如果这是您感兴趣的…
public class TestTextArea extends JFrame { public TestTextArea() { setLayout(new GridBagLayout()); JTextArea textArea = new JTextArea(); textArea.setColumns(10); textArea.setRows(1); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); add(textArea); setSize(200,200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); textArea.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent ce) { System.out.println("I've changed size"); } }); } /** * @param args the command line arguments */ public static void main(String[] args) { new TestTextArea(); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。