有谁知道近似的文本像素比? (Java字符串定位)

Does anyone know an approximate text to pixel ratio? (Java String positioning)

就像您在几乎所有文本编辑软件中看到的那样,css 等等,我想用 java.awt 定位我的文本。我对此的测试代码是:

public class Test {
    public static void main(String[] args) {
        // creating the frame
        JFrame frame = new JFrame("Test");
        frame.setSize(1000, 800);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        // variables
        int x1 = 50;
        int x2 = 500;
        int y1 = 70;
        int y2 = 150;
        int y3 = 230;
        int width = 400;
        int height = 60;
        int fontsize = 40;
        String text = "This is a test";

        frame.add(new JPanel() {
            public void paint(Graphics g) {
                g.setColor(Color.BLACK);

                // borders
                g.drawRect(x1, y1, width, height); // top
                g.drawRect(x1, y2, width, height); // middle
                g.drawRect(x1, y3, width, height); // bottom
                g.drawRect(x2, y1, width, height); // left
                g.drawRect(x2, y2, width, height); // center
                g.drawRect(x2, y3, width, height); // right

                g.setFont(new Font("arial", Font.PLAIN, fontsize));

                // top
                g.drawString(text, x1 + 10, y1 + fontsize); // x1 + 10 (10 is a buffer)
                // center
                g.drawString(text, x1 + 10, y2 + fontsize + (height - fontsize) / 2);
                // bottom
                g.drawString(text, x1 + 10, y3 + height);

                // left
                g.drawString(text, x2, y1 + fontsize);
                // middle
                g.drawString(text, x2 + width / 2 - text.length() * (fontsize/5), y2 + fontsize + (height - fontsize) / 2);
                // right
                g.drawString(text, x2 + (width - text.length() * (fontsize/5)), y3 + height);

            }
        });
        frame.setVisible(true);
    }
}

当然它看起来有点乱,但我正在一个 API 项目中处理它,我正在实现 ux 功能 atm。

您可以使用 Graphics 对象的 FontMetrics 对象获取有关字体规格的信息,以帮助确定文本的大小:

FontMetrics fm = g.getFontMetrics();

请参阅:Measuring Text 教程。

你为什么要做定制绘画?为什么不使用带布局管理器的 Swing 组件来管理 UI?我们无法提供具体建议,因为我们不知道您发布的代码的目标是什么。