如何在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
我不知道你可以不使用复杂的方案。 如果它符合您的喜好,您可以将带有居中文本的标题边框应用于框架的内容窗格。
- 有没有办法让maven scp旅行车在linux / mac / windows平台上保持一致?
- inheritance和多态之间的区别
- 调用SwingWorker.get()时防止GUI冻结
- 在页面加载期间从托管bean设置jsf InputSecret的值
- 如何在jar中使用javax.net.ssl.keystore中的文件?
- 从Tiles视图(JSP)访问Spring bean
- 如何获取Java对象的地址?
- Spring的SecurityContextHolder.getContext()。getAuthentication()在HTTPS / SSL中使用RedirectView后返回null
- 使用java下载zip文件?