事件处理-各位高手请进
我准备通过按纽实现椭圆背景改变
但几经实验不成功。
我刚学java所以各位高手一定帮忙讲详细点。
我一定给分。
目的是一按按钮是椭圆背景改变颜色
希望各位高手一定帮忙。
我的代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class FillTest
{
public static void main(String[] args)
{
FillFrame frame = new FillFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class FillFrame extends JFrame
{
public FillFrame()
{
setSize(200,200);
setTitle("This is a FillFrameTest");
FillPanel panel = new FillPanel();
Container contentPane = getContentPane();
contentPane.add(panel);
//panel.paintComponent(new Graphics2D());
}
}
class FillPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
final Graphics2D g2 = (Graphics2D)g;
double leftX = 200;
double topY = 300;
double width = 200;
double height = 200;
final Rectangle2D rect = new Rectangle.Double(leftX,topY,width,height);
g2.draw(rect);
JButton redButton = new JButton("red");
add(redButton);
redButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
try{
rect.setPaint(Color.red);
rect.fill(rect);
}
catch(Exception e){
e.printStackTrace();
}
}
});
}
}
问题点数:0、回复次数:4Top
1 楼Dream_lover()回复于 2003-12-02 01:00:09 得分 0
将错误一起贴出来阿,方便别人看。Top
2 楼Dream_lover()回复于 2003-12-02 01:16:07 得分 0
rect.setPaint(Color.red);
rect.fill(rect);
这两句是错误的,可以改成 g2.setColor(Color.red);g2.fill(rect);
不过rect是定义的一个矩形,所以画出的是矩形。另外颜色的改变可以通过g2.setColor()中的参数改变Top
3 楼IcanIbelieve(风中残阳)回复于 2003-12-02 11:43:45 得分 0
这个没有错误,只是不能改变颜色,按下按纽后颜色不发生改变。你这个方法我试过,但是不行在内部类中不能引用外部变量。所以不行。请大家继续帮忙试一试。Top
4 楼IcanIbelieve(风中残阳)回复于 2003-12-02 11:48:55 得分 0
这样还是不行。本身我上面的代码没有错误。但是就是不能实现颜色的改变。如果用楼上的方法。好象出现不能引用外部变量。所以还是不行。
请大家为我设计那事件处理的那一部分。
谢谢!!Top




