在JLabel中格式化文本,特别是科学/数学单元

时间:2015-04-09 16:19:32

标签: java html swing unicode jlabel

这不是一个过于关键的问题,它可能会被标记为重复,因为我之前要问的问题有点被问过(但不完全使用我想要做的相同字符,而且它们是在2011年至2012年左右问,所以也许现在有不同的答案)。

好的,所以我有一个我正在编写的物理程序需要数字输入,常量值等等....我正在使用JLabel来表示我的所有JTextField标签。现在我理解在尝试创建分数时使用html标记为super和subscript。但是大多数物理单位不是数字分数(即每秒平方米)。以下是我尝试创建它的方法,它取得了一定程度的成功(这项工作非常简单)。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MathFormattingTest extends JFrame {
    private static final long serialVersionUID = 1L;

    JPanel panel;
    JLabel gravitationalAccelerationConstantLabel;
    JLabel densityOfPVCConstantLabel;

    private void initComponents() {

        panel = new JPanel();
        gravitationalAccelerationConstantLabel = new JLabel();
        densityOfPVCConstantLabel = new JLabel();

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        BorderLayout layout = new BorderLayout(25, 25);
        panel.setLayout(layout);
        panel.setBackground(Color.WHITE);
        panel.setOpaque(true);
        panel.setBorder(BorderFactory.createEmptyBorder(25, 25, 25, 25));

        gravitationalAccelerationConstantLabel.setText("<html>Gravitational Acceleration (<sup>m</sup> &#8260 <sub>s<sup> 2 </sup></sub>): 9.81</html>");
        densityOfPVCConstantLabel.setText("<html>Density of PVC (<sup>lb</sup> &#8260 <sub>in</sub>): 0.04225</html>");

        panel.add(gravitationalAccelerationConstantLabel, BorderLayout.NORTH);
        panel.add(densityOfPVCConstantLabel, BorderLayout.SOUTH);

        add(panel);

        pack();
        setLocationRelativeTo(null);
    }

    public MathFormattingTest() {

        initComponents();
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MathFormattingTest().setVisible(true);
            }
        });
    }   
}

如果你编译并运行这个程序,你会发现输出并不是世界上最干净的东西。现在建议的一件事是将其绘制为绘图组件,然后将图像转换为图标并发布图标。对于我认为相对简单的事情来说,这似乎是一种很大的努力。也许我疯了,但我认为像这样的东西在java编程中会比较常见,并且会有一种“更漂亮”的方式。你们给予的任何建议都非常受欢迎,这个地方永远不会让我失望,应该成为任何想要学习编程的人的首选。

0 个答案:

没有答案