paintComponent 删除按钮的文本值
paintComponent removing text value of button
我正在为 JButton
或 JTableHeader
设置背景图片。当我对它执行 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);
}
我正在为 JButton
或 JTableHeader
设置背景图片。当我对它执行 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);
}