Java 如何在中心Jpanel中使字符串完全居中

Java 如何在中心Jpanel中使字符串完全居中,java,string,swing,layout,jpanel,Java,String,Swing,Layout,Jpanel,我画了两个字符串,其中一个包括我的名字、中间名、姓氏,另一个是我的国家。我在一个位于中心面板的油漆组件中创建了它们。然而,我尝试了许多不同的方法和计算来居中该字符串,但没有一个能够准确地正确工作。这是一种准确的方法吗?这是迄今为止我尝试过的一个计算示例 posX=((getWidth()-fm.stringWidth(phrase))/2); posY= ((getHeight()-fm.getHeight())/2); 由于文本是从基线向上渲染的,因此需要调整y位置以考虑这一点: pos

我画了两个字符串,其中一个包括我的名字、中间名、姓氏,另一个是我的国家。我在一个位于中心面板的油漆组件中创建了它们。然而,我尝试了许多不同的方法和计算来居中该字符串,但没有一个能够准确地正确工作。这是一种准确的方法吗?这是迄今为止我尝试过的一个计算示例

posX=((getWidth()-fm.stringWidth(phrase))/2);
posY= ((getHeight()-fm.getHeight())/2);  

由于文本是从基线向上渲染的,因此需要调整
y
位置以考虑这一点:

posY = ((getHeight() - fm.getHeight()) / 2) + fm.getAscent();
否则,您将使文本围绕基线居中,而不是“绝对”

这是可以证明的


您还应该查看更多详细信息,以及“然而,我尝试了许多不同的方法和计算来居中该字符串,但没有一种方法能够正确地工作,这是一种正确的方法吗?”-如果您能提供一个“不工作”的演示,我将非常高兴和你想要达到的目标相联系你为什么要做定制绘画?使用JLabel和适当的布局管理器。布局管理器将负责所有组件的居中。