java - 绘制包含显示圆形图标的标签

标签 java swing icons

所以我试图绘制一个标签,其中包含一个显示圆圈的图标。该圆圈最初将被填充为红色,然后根据我按下的 3 个按钮中的哪一个,它会使用重绘更改为绿色、蓝色或红色。

这是我到目前为止所拥有的:

public class ColorChanger implements Icon {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame myFrame = new JFrame();
        JButton redButton = new JButton("Red");
        JButton greenButton = new JButton("Green");
        JButton blueButton = new JButton("Blue");
        Graphics g;

        ColorChanger myCircle = new ColorChanger();
        final JLabel myLabel = new JLabel(myCircle);

    //  myCircle.paintIcon(myFrame, g, 50, 50);

        final int FRAME_WIDTH = 300;
        final int FRAME_HEIGHT = 200; 

        myFrame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        myFrame.setLayout(new FlowLayout());

        myFrame.add(redButton);
        myFrame.add(greenButton);
        myFrame.add(blueButton);
        myFrame.add(myLabel);

        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        myFrame.pack();
        myFrame.setVisible(true); 
    }

    @Override
    public int getIconWidth() {
        // TODO Auto-generated method stub
        return 10;
    }

    @Override
    public int getIconHeight() {
        // TODO Auto-generated method stub
        return 10;
    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        // TODO Auto-generated method stub
        Graphics2D g2 = (Graphics2D) g;
        Ellipse2D.Double circle = new Ellipse2D.Double(50, 50, 10, 10);
        g2.setColor(Color.RED);
        g2.fill(circle);
    }    
}

我的问题是,我不知道在paintIcon 中为Graphics g 传递什么。有其他方法可以做到这一点吗?我感谢任何对此的帮助。

最佳答案

Ellipse2D.Double circle = new Ellipse2D.Double(50, 50, 10, 10);

图标的大小为 (10, 10)。 50,超出了图标的范围。绘画是相对于图标完成的,因此椭圆应该是:

Ellipse2D.Double circle = new Ellipse2D.Double(0, 0, 10, 10);

it will either change to green, blue, or red using repaint.

您的 ColorChanger 类将需要一个 setColor(Color color) 方法,以便您可以动态更改要绘制的颜色。 PaintIcon() 方法应该使用此颜色。

关于java - 绘制包含显示圆形图标的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28893005/

相关文章:

java - 在 JTable 中显示 JCheckBox

java 组合框自动完成

objective-c - 获取 cocoa 中特殊路径的图标

java - Apache FTP 嵌入式服务器用于监听特定 IP

java - 在 Java 应用程序中获取 Chrome 浏览器

java - 在 JSF 页面中突出显示行不起作用

java - 如何在 Java 中将浮点枚举与 Jcombobox 一起使用

java - 生成的图像跳过像素

java - 我想用 GUI 在 Java 中创建一个评级系统

winapi - 如何从 HICON 确定图标的大小?