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

标签 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

这可能是什么问题?

最佳答案

不要自己做定制绘画。而是这样做:

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

super.paintComponent(g2);

g2.dispose();

关于java - 自定义 JLabel 类打破了 JLabel 的定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20619250/

相关文章:

java - Joda DateTime 中 01.04.1893 的奇数结果

java - 尝试从一个 ArrayList 到另一个 ArrayList 创建新引用是移动而不是复制我的原始对象

java - 在新窗口中创建 JTable 作为 Java 中 JMenuItem 的 Action 监听器

java - java中JFrame输入错误时通知用户

java - 通过 JButton 问题增加文本字体值

java - 使用 Jython 语法创建 JFrame/JLabel

java - 使用JDBI枚举数据库表

java - 在不同多核处理器上进行测试的速度标准化

java - JDialog : Making some portion transparent

Java JTable 如何在按下回车键时将焦点从编辑模式下的当前单元格转移到下一个单元格