我正在使用 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();
    }

这是按钮:

最佳答案

默认情况下,

  • 没有理由为PreferredSizeHtml <=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();
                }
            });
        }
    }
    

    10-01 00:24
    查看更多