4、设计一个Applet程序,创建2个按钮和一个文本框,分别用来控制画红色和绿色的填充圆,文本框中输入半径

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:38:58
import java.awt.*;
import java.awt.event.*;
class mycanvas extends Canvas
{int x,y,r;
mycanvas()
{setBackground(Color.cyan);}
public void setX(int x){this.x=x;
}
public void setY(int y){this.y=y;
}
public void setR(int r){this.r=r;
}
public void paint(Graphics g)
{g.drawOval(x,y,2*r,2*r);
g.setColor(Color.gray);
}
}

class canvaswindow extends Frame implements ActionListener
{Button button1,button2,button3;
mycanvas canvas;
canvaswindow(String s)
{//setLayout(null);
button1=new Button("red");
button2=new Button("blue");
button3=new Button("green");
canvas=new mycanvas();
Panel panel=new Panel();
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
panel.add(button1);panel.add(button2);
panel.add(button3);
add(panel);
//panel.setBounds(0,0,50,50

你把整个画布都填充了,这样不也等于填充了圆么?还有你的paint方法里面如果要填充圆应该是fillOval,但是在这之前又不设置颜色,在之后设置灰色是没用的。总而言之,不太明白你的意思,就根据题目需求自己写了一点,题目对坐标没有要求,所以我就画在正中间了,文本框是要按下回车才有作用

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

class PaintingPanel extends JPanel {
private static final long serialVersionUID = -2398169663737549831L;
int radius;
Color color;

PaintingPanel(int radius) {
this.radius = radius;
}

public void paint(Graphics g) {
super.paint(g);
if (color != null) {
g.setColor(color);
g.fillOval((getWidth() >> 1) - radius, (getHeight() >> 1) - radius,
radius << 1, radius << 1);
}
}
}

public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
final Paintin