这不是一个过于关键的问题,它可能会被标记为重复,因为我之前要问的问题有点被问过(但不完全使用我想要做的相同字符,而且它们是在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> ⁄ <sub>s<sup> 2 </sup></sub>): 9.81</html>");
densityOfPVCConstantLabel.setText("<html>Density of PVC (<sup>lb</sup> ⁄ <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编程中会比较常见,并且会有一种“更漂亮”的方式。你们给予的任何建议都非常受欢迎,这个地方永远不会让我失望,应该成为任何想要学习编程的人的首选。