Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTextPane或JTextArea在换行前设置每行的字符数_Java_Character_Limit_Jtextarea_Jtextpane - Fatal编程技术网

Java JTextPane或JTextArea在换行前设置每行的字符数

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

我有一个64个字符的“键”(文本),我希望使用包含JTextPanel或JTextArea的swing JPanel在有限的空间(宽度)内显示它。所有文本都是字母数字,没有空格,我使用单空格字体来显示它。我想把钥匙打印成4行16个字符。我的代码:

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)(我知道它是有效的,因为它显示了字体),但无论出于何种原因,该字体没有达到您的行所做的效果,这正是我想要的。