自定义JLabel类打破了JLabel的定位

时间:2013-12-16 19:29:34

标签: java swing jlabel

我创建了一个扩展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的结果: enter image description here

在这里使用AntialiasedJLabel: enter image description here

这可能是什么问题?

1 个答案:

答案 0 :(得分:3)

不要自己做自定义绘画。而是做:

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

super.paintComponent(g2);

g2.dispose();