Java JTextField中方向正确的占位符

Java JTextField中方向正确的占位符,java,swing,paintcomponent,Java,Swing,Paintcomponent,我使用以下代码在JTextField中创建占位符,但我的问题是占位符文本方向总是在左侧 @Override protected void paintComponent(final Graphics pG) { super.paintComponent(pG); if (placeholder.length() == 0 || getText().length() > 0) { return; } final Graphics2D g =

我使用以下代码在JTextField中创建占位符,但我的问题是占位符文本方向总是在左侧

@Override
protected void paintComponent(final Graphics pG) {
    super.paintComponent(pG);

    if (placeholder.length() == 0 || getText().length() > 0) {
        return;
    }

    final Graphics2D g = (Graphics2D) pG;
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    g.setColor(new Color(phColor.getRed(),phColor.getGreen(),phColor.getBlue(),140));


   g.drawString(placeholder, getMargin().right,(getSize().height)/2 + getFont().getSize()/2 );
}
如何在JTextField上创建文本方向向右的占位符

这是我的问题的图像


使用FontMetrics类:

FontMetrics fM = g.getFontMetrics(/*The font that you're using*/);

g.drawString(/* Your Text */, rightEdge - fM.stringWidth(/* Your Text */), y);
通过将x位置添加到JTextField的宽度,可以获得正确的边缘。
您是否已经有了一个方法:“getMargin.right()”?或者这是为了别的什么?

非常感谢您的回答,但是我如何才能进入组件的正确边缘?还有其他想法吗?我的回答有用吗?非常感谢。但我试图获得JTextField的正确边缘,但没有成功。尽管使用getMargin.right()或getInsets()。right方法和这些方法重定向到文本字段组件