我试图弄清楚如何使用 Graphics2D 和 FontMetrics 在窗口中水平居中文本。我制作了一种方法,希望在将字符串更改为 Font 类型后可以测量字符串的长度,但它不能很好地使文本居中。如何正确居中文本?标题没有很好地居中:我的 MainClass 类:import java.io.File;import java.io.IOException;import java.awt.Font;import java.awt.FontFormatException;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.GraphicsEnvironment;import javax.swing.JFrame;import javax.swing.JPanel;public class MainClass extends JPanel{ static final int WINDOW_WIDTH = 1600; static final int WINDOW_HEIGHT = 900; // Displays the game window. private static void displayGameWindow() { Color tan = new Color(155, 136, 120); JFrame frame = new JFrame("Bandit King"); frame.setBackground(tan); frame.getContentPane().add(new MainClass()); frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // Imports a font. private static void registerFont() { try { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Font f = Font.createFont(Font.TRUETYPE_FONT, new File("OLDSH.TTF")); ge.registerFont(f); } catch (IOException|FontFormatException e) { e.printStackTrace(); System.out.println("ERROR loading font, switching to serif."); Font f = new Font("Serif", Font.PLAIN, 12); } } // Calls functions to display the screen @Override public void paint(Graphics g) { Dimension d = this.getPreferredSize(); Graphics2D g2d = (Graphics2D) g; g.fillRect(0, 0, d.width, d.height); // default font settings String fontName = "OldStyle 1 HPLHS"; String fontType = "BOLD"; int[] color = {0, 0, 0}; int fontSize = 25;}
2 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
int x = MainClass.WINDOW_WIDTH / 2 - width;
应该
int x = MainClass.WINDOW_WIDTH / 2 - width/2;
添加回答
举报
0/150
提交
取消