0

下面的代码在面板上放置一个按钮。但是有一个问题。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);
        }
}
4

2 回答 2

2

你需要打电话

super.paintComponent(g);

这将绘制所有子组件。但是,这里不需要自定义绘画,因为JButton它提供了一个方法setBackground来直接设置背景颜色。您可以使用

button.setBackground(Color.GREEN);

请参阅:执行自定义绘画

于 2013-03-31T04:58:25.887 回答
-1

首先你需要调用: super.paintComponent(g); 如果您想覆盖它的任何行为,请在 paintComponent() 中。但是,如果您只想更改背景颜色,请在构造函数中执行此操作。无需为属性更改覆盖paintComponent。

于 2013-03-31T05:04:59.893 回答