为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java 在窗口中水平居中文本

使用 Java 在窗口中水平居中文本

米脂 2021-11-03 16:15:38
我试图弄清楚如何使用 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 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

获取文本宽度之前尝试设置字体大小。


查看完整回答
反对 回复 2021-11-03
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

int x = MainClass.WINDOW_WIDTH / 2 - width;

应该

int x = MainClass.WINDOW_WIDTH / 2 - width/2;


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 411 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信