我正在使用 html标签在按钮上显示参数及其值。一些按钮包含一个参数,一些按钮包含2或3个参数。 “/” 用于分隔值。名称和值之间有一个空行。但是在长值的情况下,我想使用该空行来显示值,例如“表H / V ”按钮。
我正在尝试使用值字符串的长度来确定是否需要空行。由于字符数不能反映该字符串的绘制长度,因此无法正常工作。按钮大小是固定的。
我问我怎么知道何时应该再有一个代表该空行的“
”? 或我怎么知道何时将值字符串包装到另一行?
这是我的代码:
private static String getBtnDisplayStr(String name, String value)
{
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("<html><center><b>");
sBuilder.append(name);
if(value.length() <= 12) //add one empty line for short value string
{
sBuilder.append("</center></b><br><br><font size=\"2\">");
}
else
{
sBuilder.append("</center></b><br><font size=\"2\">");
}
sBuilder.append(value);
sBuilder.append("</font></html>");
return sBuilder.toString();
}
这是按钮:
最佳答案
默认情况下,
PreferredSize
和Html <=3.2
Swing JComponents
LayoutManager
的值,例如GridLayout从最大元素import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class HtmlAndJButton {
final String buttonText = " Whatever words, <br> but nothing wise";
final String buttonText1 = " Whatever words, <br> but nothing wise, "
+ "<br> plus 1st. line, ";
final String buttonText2 = " Whatever words, <br> but nothing wise, "
+ "<br> plus 1st. line, <br> plus 2nd. line,";
private JButton btn1 = new JButton("Toggle");
private JButton button = new JButton(buttonText);
private JButton button1 = new JButton("Toggle");
private JButton button2 = new JButton("Toggle");
public HtmlAndJButton() {
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button.setText("<html><font color=" + (button.isEnabled()
? "blue" : "red") + ">" + buttonText + "</font></html>");
button.setEnabled(!button.isEnabled());
button1.setText("<html><font color=" + (button1.isEnabled()
? "red" : "green") + ">" + buttonText1 + "</font></html>");
button1.setEnabled(!button1.isEnabled());
button2.setText("<html><font color=" + (button2.isEnabled()
? "green" : "yellow") + ">" + buttonText2 + "</font></html>");
button2.setEnabled(!button2.isEnabled());
}
});
button.setText("<html><font color=red>" + buttonText + "</font></html>");
button1.setText("<html><font color=green>" + buttonText1 + "</font></html>");
button2.setText("<html><font color=yellow>" + buttonText2 + "</font></html>");
JFrame f = new JFrame("ButtonTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(2, 2));
f.add(button);
f.add(button1);
f.add(button2);
f.add(btn1);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
HtmlAndJButton t = new HtmlAndJButton();
}
});
}
}