Java JTextPane或JTextArea在换行前设置每行的字符数
我有一个64个字符的“键”(文本),我希望使用包含JTextPanel或JTextArea的swing JPanel在有限的空间(宽度)内显示它。所有文本都是字母数字,没有空格,我使用单空格字体来显示它。我想把钥匙打印成4行16个字符。我的代码:Java JTextPane或JTextArea在换行前设置每行的字符数,java,character,limit,jtextarea,jtextpane,Java,Character,Limit,Jtextarea,Jtextpane,我有一个64个字符的“键”(文本),我希望使用包含JTextPanel或JTextArea的swing JPanel在有限的空间(宽度)内显示它。所有文本都是字母数字,没有空格,我使用单空格字体来显示它。我想把钥匙打印成4行16个字符。我的代码: JTextArea key = new JTextArea(); key.setColumns(16); key.setRows(4); key.setLineWrap(true); key.setWrapStyleWord(true); key.se
JTextArea key = new JTextArea();
key.setColumns(16);
key.setRows(4);
key.setLineWrap(true);
key.setWrapStyleWord(true);
key.setText("475EC49A50F35BA50FE5791B8ECFC12515393A5A200C6BA2C82B290C053A6C85");
JPanel keypanel = new JPanel();
keypanel.add(privatekeybackuptext);
当我运行它时,它每行打印超过16个字符。它只需在任意大小的框中打印尽可能多的字符,textarea/textpane就会以2.5行十六进制字符结束。我猜setColumns和setRows与文本的显示方式无关,或者布局管理器正在覆盖某些内容?到目前为止,我已经尝试将面板的layoutmanager设置为默认的FlowLayout,还尝试了使用fill=GridBagConstraints.BOTH的GridBagConstraints。两者都不起作用。我知道我可以通过倒数16个字符并添加换行符来伪造它,但我宁愿做得正确。最简单的方法是什么
我猜setColumns和setRows都与文本的显示方式无关
设置列将调整文本区域的大小,使其可以包含16个“W”字符
当我运行它时,它每行打印超过16个字符
您需要使用单间距字体
textArea.setFont(new Font("monospaced", Font.PLAIN, 12));
现在一个“I”和一个“W”是一样的,所以每行应该有16个字符。这将是很困难的,因为你不能保证JTextArea将使用的字体,因此你不能保证一行可以容纳多少个字符。为什么不把字符串分成四行,长度为16?这就解决了问题,完全使用了文本行。具有讽刺意味的是,我曾尝试通过注册ttf文件并将字体设置为该字体来添加monospace字体(Incolata)(我知道它是有效的,因为它显示了字体),但无论出于何种原因,该字体没有达到您的行所做的效果,这正是我想要的。