以下代码将按钮放在面板上。但是有一个问题。我既没有看到按钮上的标签Click Me
,也没有看到green
中画出的按钮。这是为什么 ?
import javax.swing.*;
import java.awt.*;
class Tester extends JButton {
public Tester(String label) {
super(label);
}
@Override
public void paintComponent(Graphics g) {
g.setColor(Color.GREEN);
}
public static void main(String args[]) {
JFrame fr = new JFrame();
JPanel p = new JPanel();
JButton button = new Tester("Click Me !");
p.add(button);
fr.add(p);
fr.setVisible(true);
fr.setSize(400,400);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
答案 0 :(得分:2)
您需要致电
super.paintComponent(g);
这将绘制所有子组件。但是,此处不需要自定义绘制,因为JButton
提供了一种方法setBackground来直接设置背景颜色。你可以使用
button.setBackground(Color.GREEN);
答案 1 :(得分:-1)
首先你需要调用:super.paintComponent(g);在paintComponent()中,如果要覆盖其任何行为。但是,如果您只想更改背景颜色,请在构造函数中执行此操作。没有必要覆盖paintComponent进行属性更改。