gpt4 book ai didi

Java Applet 设置颜色 Action 监听器

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

我有 3 个按钮,添加了它们,并且每个按钮上都有 Action 监听器。在执行的操作部分,他们应该将 g.setcolor 更改为某种颜色并重新绘制我的椭圆形。我做错了什么?

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class zzz extends Applet implements ActionListener {

Button a, b, c;

public void init()
{
setLayout(new FlowLayout());

a = new Button("Red");
b = new Button("Blue");
c = new Button("Green");
add(a);
add(b);
add(c);
a.addActionListener(this);
b.addActionListener(this);
c.addActionListener(this);

}

public void paint(Graphics g){

g.drawOval(250,100,100,100);
g.drawString("Circle",275,100);
g.setColor(Color.white);
g.fillOval(250,100,100,100);


}

public void actionPerformed (ActionEvent evt)
{
if (evt.getSource() == a){
g.setColor(Color.red);
repaint();
}
else if (evt.getSource() == b){
g.setColor(Color.blue);
repaint();
}
else if (evt.getSource() == c){
g.setColor(Color.green);
repaint();
}
}
}

最佳答案

  1. 这不是绘画的方式。
  2. 您应该避免直接绘制到顶层容器

您不应尝试更改 g(它在 actionPerformed 方法的上下文中未定义),而应设置一个变量来指示当前颜色,更像是这样。 ..

public void actionPerformed (ActionEvent evt)
{
if (evt.getSource() == a){
drawColor = Color.red;
}
else if (evt.getSource() == b){
drawColor = Color.blue;
}
else if (evt.getSource() == c){
drawColor = Color.green;
}
repaint();
}

然后你需要更新你的绘画方法,使其看起来更像......

public void paint(Graphics g){
super.paint(g);
g.setColor(drawColor);
g.drawOval(250,100,100,100);
g.drawString("Circle",275,100);
g.setColor(Color.white);
g.fillOval(250,100,100,100);
}

关于Java Applet 设置颜色 Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312766/

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