如何在JFrame中居中对齐标题?

我有一个带标题JFrame 。 我希望中心对齐标题 ,以便它出现在JFrame标题中间

谢谢。

考虑让标题保持左对齐……但是……这会让你靠近中心。 对于可resize的帧,您需要在resize时重写标题。

JFrame t = new JFrame(); t.setSize(600,300); t.setFont(new Font("System", Font.PLAIN, 14)); Font f = t.getFont(); FontMetrics fm = t.getFontMetrics(f); int x = fm.stringWidth("Hello Center"); int y = fm.stringWidth(" "); int z = t.getWidth()/2 - (x/2); int w = z/y; String pad =""; //for (int i=0; i!=w; i++) pad +=" "; pad = String.format("%"+w+"s", pad); t.setTitle(pad+"Hello Center"); 

调整答案的 @ Java42 源代码 ,我在调整JFrame大小时调整了标题“解决方法”:

 import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Font; import java.awt.FontMetrics; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; public class JFrameTitleCenter { public void createAndShowGUI() { JFrame frame = new JFrame(); frame.setPreferredSize(new Dimension(300, 200)); frame.setTitle("Hello Center"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { titleAlign(frame); } }); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } private void titleAlign(JFrame frame) { Font font = frame.getFont(); String currentTitle = frame.getTitle().trim(); FontMetrics fm = frame.getFontMetrics(font); int frameWidth = frame.getWidth(); int titleWidth = fm.stringWidth(currentTitle); int spaceWidth = fm.stringWidth(" "); int centerPos = (frameWidth / 2) - (titleWidth / 2); int spaceCount = centerPos / spaceWidth; String pad = ""; pad = String.format("%" + (spaceCount - 14) + "s", pad); frame.setTitle(pad + currentTitle); } public static void main(String[] args) { EventQueue.invokeLater(() -> { new JFrameTitleCenter().createAndShowGUI(); }); } } 

加工:

在此处输入图像描述

 I have a JFrame with a Title. I want center align the title, so that it appears in the middle of the JFrame's title. 

简单的无法在JFrames JFrames TitleBar居中叙事,这个容器来自Native OS

  • 在Windows操作系统中通过实现getSystemLookAndFeel可以实现脏黑客攻击

  • 通过添加JPanel (模拟Toolbar )和JButtons(带有模拟标准按钮的图标的JButtons)创建未修饰的JFrame

我不知道你可以不使用复杂的方案。 如果它符合您的喜好,您可以将带有居中文本的标题边框应用于框架的内容窗格。