在包装

时间:2018-04-09 19:19:29

标签: 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.setText("475EC49A50F35BA50FE5791B8ECFC12515393A5A200C6BA2C82B290C053A6C85");
JPanel keypanel = new JPanel();
keypanel.add(privatekeybackuptext);

当我运行它时,每行打印超过16个字符。它只打印任意大小的盒子中的任意数量,textarea / textpane最终有2.5行十六进制字符。我猜测setColumns和setRows与文本显示方式或布局管理器是否覆盖某些内容无关?到目前为止,我已经尝试将面板的layoutmanager设置为默认的FlowLayout,并且我还尝试使用fill = GridBagConstraints.BOTH的GridBagConstraints。都没有奏效。我知道我可以通过计算16个字符并添加换行符来伪造它,但我宁愿正确地做到这一点。最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

  

我猜测setColumns和setRows与文本的显示方式无关

设置列将调整文本区域的大小,使其可以包含16个“W”字符。

  

当我运行它时,每行打印超过16个字符

您需要使用等宽字体。

textArea.setFont(new Font("monospaced", Font.PLAIN, 12));

现在“I”与“W”相同,因此每行应该有16个字符。