如何在Swing

时间:2015-05-29 16:27:54

标签: java html swing jlabel

我有一个不寻常的问题: 我有一个挥杆标签,用于更新游戏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);

如何布局^^

2 个答案:

答案 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