我有一个不寻常的问题: 我有一个挥杆标签,用于更新游戏Hangman中的“二手字母”。我声明它是这样的:
used = new JLabel(" Used: ");
但是我在代码中添加了另一个区域。这里:
used.setText(used.getText() + lUsed + " , ");
现在,当用户输入字母时,它会更新标签并添加字母,但如果输入的数量足够多,则会将框架的其余内容推出视图。标签扩展了我的borderlayout的WEST侧,以至于其他所有内容都被推送,然后有时会切断应用程序窗口。
是否有一种很好的方法可以使用HTML来制作文字,以便文字包装文字并且不会更改面板(它包含的内容)大小?
GridLayout c = new GridLayout(rows,0);
westPanel = new JPanel(c);
westPanel.add(guessedPanel);
westPanel.add(usedPanel);
frame.getContentPane().add(westPanel, BorderLayout.WEST);
如何布局^^
答案 0 :(得分:4)
对于那些来自Google的广告解决方案,只要正在添加的内容开始,就可以非常轻松地向Swing组件添加HTML 以正确的HTML标签结束。
例如,您可以将HTML文本插入JLabel,以便:
label.setText("<html> Text </html>");
你可以对它进行着色,并在第一个字母下划线:
label.setText("<html><center><u>T</u>ext</center></html>");
这里有关于如何在Swing组件中使用HTML的good tutorial。
-
对于您的特定解决方案,您可以在向标签添加文字时使用HTML。您应该将文本存储在某个地方的字符串中(不包含打开和关闭的HTML标记),而是更新该字符串,以便能够有效地管理打开和关闭HTML标记,而不是使用used.getText()
。所以它可能会像这样
String text; // Earlier in the code
...
text += ("<br> " + lUsed);
used.setText("<html>" + text + "</html>")
除此之外,您可以尝试设置标签的首选大小或最大大小,以使其不会变大。此外,您可以将标签设置为某种文本面板或文本区域,这样可以自动支持自动换行,滚动和其他您可能需要的功能。
这是how to use JTextAreas的指南。
答案 1 :(得分:1)
为HTML的body
标记指定样式的宽度。有关示例,请参阅Text Wrap in JOptionPane。