Java 自定义JLabel类中断JLabel的定位

Java 自定义JLabel类中断JLabel的定位,java,swing,jlabel,Java,Swing,Jlabel,我已经创建了一个扩展JLabel的类,因为它通常不抗锯齿。但是,当我使用它时,JLabel的整个定位都被破坏了。这怎么可能? 下面是该类的代码: private class AntialiasedJLabel extends JLabel{ public AntialiasedJLabel(){} public AntialiasedJLabel(String name){ this.setText(name); } public void

我已经创建了一个扩展JLabel的类,因为它通常不抗锯齿。但是,当我使用它时,JLabel的整个定位都被破坏了。这怎么可能? 下面是该类的代码:

private class AntialiasedJLabel extends JLabel{

    public AntialiasedJLabel(){}

    public AntialiasedJLabel(String name){
        this.setText(name);
    }


    public void paintComponent(Graphics g){
        ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g.drawString(getText(),getX(),getY());
    }
}
以下是使用普通JLabel的结果:

这里使用抗锯齿jLabel:


这里可能有什么问题?

不要自己进行自定义绘制。相反,你应该:

Graphics g2 = g.create();
g2.setRenderingHint(...);

super.paintComponent(g2);

g2.dispose();

这只会导致文本绘制两次(我已经展示了这两种情况的组合)。因为我的方法通常重画所有东西,所以不需要超级调用。@ MeMeFeUS对不起,当我重新检查代码时,我正在编辑答案。哦,没关系,但是使用你的方法仍然没有效果:/@ MeMeFueMm,然后发布你的代码> SSCCE < /C>(就像你上次发布的一样)。这说明了问题所在。请尝试设置键\u抗锯齿以及键\u文本\u抗锯齿。JLabel可能使用GlyphVector(一种形状)绘制标签,而文本antialias可能对其没有影响。