0

丸いボタンを試してみましたが、ここに問題があります。現在、私はこのようなボタンを取得しています:

ここに画像の説明を入力

私がやりたいのは、ボタン四角の残りの部分を埋めることです。これを行うにはどうすればよいですか? これは、このボタンを描画したコードです。

import javax.swing.*;
import java.awt.*;

class Tester extends JButton {

        public Tester(String label) {
            super(label);
            setContentAreaFilled(false);
            Dimension size = this.getPreferredSize();
            size.width = size.height = Math.max(size.width,size.height);
            this.setPreferredSize(size);

        }

        @Override
        public void paintComponent(Graphics g) {System.out.println("Inside the paintComponent method");
            if (getModel().isArmed()) {
                g.setColor(Color.lightGray);
            } else {
                g.setColor(getBackground());
            }
            g.fillOval(0,0,getSize().width-1,getSize().height-1);
            System.out.println(getSize().width);
            System.out.println(getSize().height);
            super.paintComponent(g);
        }


        public static void main(String args[]) {
            JFrame fr = new JFrame();
            JPanel p = new JPanel();
            JButton button = new Tester("Click Me !");
            button.setBackground(Color.GREEN);
            p.add(button);
            fr.add(p);
            fr.setVisible(true);
            fr.setSize(400,400);    
            fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
}

ボタンの残りの部分を埋めるにはどうすればよいですか?

4

2 に答える 2

5

メソッドを使用して、fillrect()呼び出す前に残りの部分を埋めることができますfillOval()

    @Override
    public void paintComponent(Graphics g) {
        System.out.println("Inside the paintComponent method");
        g.setColor(Color.red); // here
        g.fillRect(0, 0, this.getWidth(), this.getHeight()); //here

        if (getModel().isArmed()) {
            g.setColor(Color.lightGray);
        } else {
            g.setColor(getBackground());
        }

        g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
        System.out.println(getSize().width);
        System.out.println(getSize().height);
        super.paintComponent(g);
    }

上記のようにすると、

ここに画像の説明を入力

お役に立てれば。

于 2013-03-31T08:15:34.897 に答える
2

Graphics#fillRect長方形の領域を塗りつぶすようなものを使用するだけです

public void paintComponent(Graphics g) {
    System.out.println("Inside the paintComponent method");
    // Or what ever background color you want...
    g.setColor(Color.RED);
    g.fillRect(0, 0, getWidth(), getHeight());
    if (getModel().isArmed()) {
        g.setColor(Color.lightGray);
    } else {
        g.setColor(getBackground());
    }
    g.fillOval(0,0,getSize().width-1,getSize().height-1);
    System.out.println(getSize().width);
    System.out.println(getSize().height);
    super.paintComponent(g);
}
于 2013-03-31T08:15:47.680 に答える