paintComponent 删除按钮的文本值

paintComponent removing text value of button

我正在为 JButtonJTableHeader 设置背景图片。当我对它执行 paintComponent 时,它会删除为该组件设置的文本值。

知道我哪里出错了吗?

JButton btn = new JButton(){
    @Override
    public void paintComponent(Graphics g){
        Dimension size = this.getSize();
        g.drawImage(Toolkit.getDefaultToolkit().getImage("C:\User\Downloads\MainMenu.jpg"), 0, 0, size.width, size.height, this);
    }
};
btn.setText("TEST WITH ME");
btn.setOpaque(true);

I am setting background image for JButton

无需自定义绘画。您只需向按钮添加一个图标,按钮就会绘制图像。

如果你想在图片上显示文字,那么你只需使用按钮的属性:

button.setHorizontalTextPosition(...);
button.setVerticalTextPosition(...);

我可能没有准确说明我真正想要的东西。但我找到了答案。

@Override
public void paintComponent(Graphics g){
    Dimension size = this.getSize();
    g.drawImage(Toolkit.getDefaultToolkit().getImage("C:\User\Downloads\MainMenu.jpg"), 0, 0, size.width, size.height, this);
    FontMetrics fm = g.getFontMetrics();
    int x = (getWidth() - fm.stringWidth("String Value To Set")) / 2;
    int y = ( (getHeight() - fm.getHeight() ) / 2) + fm.getAscent() ;
    g.drawString(String Value To Set, x, y);
}