【发布时间】:2017-11-26 11:22:07
【问题描述】:
我正在为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);
【问题讨论】:
-
1) 在任何重写的绘制方法中,始终首先调用
super方法。这会绘制背景、边框等。 2)g.drawImage(Toolkit.getDefaultToolkit().getImage("C:\\User\\..不要在绘制方法中加载资源。一种绘画方法必须快速完成!在应用程序启动时加载图像并将其存储为类的属性。 3) 为了尽快获得更好的帮助,请发布minimal reproducible example 或Short, Self Contained, Correct Example。 4) 例如,获取图像的一种方法是热链接到在this Q&A 中看到的图像。 -
..
btn.setText("TEST WITH ME");5) 文本可以在按钮构造函数中传递。 6)无需对用户大喊大叫。最好使用"Test With Me"或"Test with me" -
你已经基本打破了油漆链要求
标签: java swing paintcomponent