java - 如何使 drawString 居中?

标签 java string swing

有什么方法可以自动居中绘制的字符串而无需手动操作?还是每次都必须手动执行?

最佳答案

由于这是一个 Swing GUI,我建议您让 GUI 为您居中——将文本放入水平对齐方式设置为 SwingConstants.CENTER,并以同样居中的方式放置 JLabel,比如在 BorderLayout.PAGE_START 位置的使用 BorderLayout 的容器中,然后宾果游戏,您的文本居中。

例如,下面的代码显示为:
enter image description here

import java.awt.BorderLayout;
import java.awt.Font;

import javax.swing.*;

public class CenteredText extends JPanel {
   private static final String TOP_TEXT = "Top Text";
   private static final String CENTER_TEXT = "Center Text";
   private static final String BOTTOM_TEXT = "Bottom Text";
   public CenteredText() {
      JLabel topLabel = new JLabel(TOP_TEXT, SwingConstants.CENTER);
      topLabel.setFont(topLabel.getFont().deriveFont(Font.BOLD, 20f));

      JLabel centerLabel = new JLabel(CENTER_TEXT, SwingConstants.CENTER);
      centerLabel.setFont(centerLabel.getFont().deriveFont(Font.BOLD, 80f));
      int ebGap = 20;
      centerLabel.setBorder(BorderFactory.createEmptyBorder(ebGap, ebGap, ebGap, ebGap));

      JLabel bottomLabel = new JLabel(BOTTOM_TEXT, SwingConstants.CENTER);
      bottomLabel.setFont(bottomLabel.getFont().deriveFont(Font.PLAIN, 8f));

      setLayout(new BorderLayout());
      add(topLabel, BorderLayout.PAGE_START);
      add(centerLabel, BorderLayout.CENTER);
      add(bottomLabel, BorderLayout.PAGE_END);
   }

   private static void createAndShowGui() {
      CenteredText mainPanel = new CenteredText();

      JFrame frame = new JFrame("CenteredText");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

关于java - 如何使 drawString 居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205115/

相关文章:

java - 如何在android studio中将堆栈从一个 Activity 传递到另一个 Activity

java - 应如何使用 Spring/Hibernate 项目设置我的业务对象

c 中的连接字符 : argument of type "char" is incompatible with parameter of type "const char*"

java - 如何找出 Java 7 和 8 中的字体文件路径

java - Java 中的 Trie 数据结构 - 电话簿应用程序

java - SQL复杂选择

mysql - 如何在 MySQL 中表示交叉应用和拆分字符串

C# 判断字符串数组中的某个元素是否在任意位置包含给定的字符串

java - 如何强制 JScrollPane 仅垂直滚动?

java - 如何将选项卡设置为swing中的默认选项卡