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);

これにより、すべての子コンポーネントがペイントされます。ただし、背景色を直接設定するsetBackgroundJButtonメソッドが提供されているため、ここではカスタム ペイントは不要です。使用できます

button.setBackground(Color.GREEN);

参照:カスタム ペインティングの実行

于 2013-03-31T04:58:25.887 に答える
-1

最初に呼び出す必要があります: super.paintComponent(g); その動作のいずれかをオーバーライドする場合は、paintComponent() で。ただし、背景色を変更するだけの場合は、コンストラクターでそれを行います。プロパティの変更のために paintComponent をオーバーライドする必要はありません。

于 2013-03-31T05:04:59.893 に答える