我试图弄清楚如何使用 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;
}
一只萌萌小番薯
慕的地6264312
相关分类