我既没有看到按钮上的标签,也没有看到它涂成绿色。这是为什么 ?

时间:2013-03-31 04:55:46

标签: java swing paint paintcomponent

以下代码将按钮放在面板上。但是有一个问题。我既没有看到按钮上的标签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);
        }
}

2 个答案:

答案 0 :(得分:2)

您需要致电

super.paintComponent(g);

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

button.setBackground(Color.GREEN);

请参阅:Performing Custom Painting

答案 1 :(得分:-1)

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