gpt4 book ai didi

java - 绘制图形和事件处理

转载 作者:行者123 更新时间:2023-12-01 15:04:25 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,在屏幕上绘制一个圆圈,然后为您提供 3 个按钮(红色、黄色和绿色),单击按钮会相应地更改圆圈的填充颜色。

我想我已经很接近了,我只是不知道如何实际创建一个绘制圆圈并更改颜色的方法。我可以编写一个方法来绘制和填充圆圈,但我只是在将其与 jbutton 合并时遇到问题

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

(忽略未使用的导入)

<小时/>

采取了不同的方法,我不知道是否会更好。我的按钮显示,所有内容在更改颜色时都遇到问题。实际上现在我什至无法显示一个圆圈。我知道我需要在我的事件处理程序中调用 repaint(); 我只是不知道该怎么做。这是周日的截止日期,我花了很多时间观看视频和阅读示例,但我无法让我的工作正常工作。我确信这很愚蠢简单,但它让我感到沮丧!

  public class test3 extends JPanel {

JRadioButton RED, YELLOW, GREEN;
Color currentColor;


public void paintComponent(Graphics g){

currentColor= Color.RED;

super.paintComponent(g);
this.setBackground(Color.WHITE);

g.setColor(currentColor);
g.fillOval(50, 50, 100, 100);
}






public static void main(String[] args) {

test3 frame = new test3();
frame.setSize(500,500);

frame.setVisible(true);
}

public test3 (){

JPanel jpRadioButtons=new JPanel();
jpRadioButtons.setLayout(new GridLayout(1,1));
jpRadioButtons.add(RED=new JRadioButton("RED"));
jpRadioButtons.add(GREEN=new JRadioButton("GREEN"));
jpRadioButtons.add(YELLOW=new JRadioButton("YELLOW"));

add(jpRadioButtons, BorderLayout.SOUTH);


ButtonGroup group=new ButtonGroup();
group.add(RED);
group.add(YELLOW);
group.add(GREEN);

GREEN.addActionListener(new ActionListener()
{
public void actionPerormed(ActionEvent e)
{

currentColor = Color.GREEN;
repaint();
}
});

}
}

最佳答案

  1. 引入一个类变量/属性/...以及当前圆的颜色。
  2. 在事件处理程序中设置此变量
  3. 同时调用“repaint();”在你的事件处理程序中
  4. 重写 paintComponent() 方法并使其以颜色绘制一个圆圈,您可以从类变量中读取该颜色。

您的paintComponent(Graphics g)可能看起来像这样:

@Override
void paintComponent(Graphics g)
{
g.setColor(currentColor);
g.drawOval(50,50,100,100);
}

关于java - 绘制图形和事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com