Java大问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 02:15:53
下面有一段代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math;
public class painting_2 {
JPanel palette;
JFrame mainJFrame;
JButton btn;
Container con;
dealPushBtn handleBtn;
//定义一个内部类来响应按钮事件
public class dealPushBtn implements ActionListener{
//当用户按下按钮时,在画布上画出图形
public void actionPerformed(ActionEvent e){
Graphics g;
final int orign_x=100,orign_y=100, radio=50; //圆的初始位置和半径
final double scope=30.0/180.0*Math.PI;//每次转动的角度
double angle=0.0;
int x=orign_x+radio,y=orign_y;
//注意画笔的获取方式,这是获取面板的画笔
g=palette.getGraphics();
g.setColor(Color.green);
//按照顺时针方向画出12个同样大小的圆形
for(int i=0;i<12;i++){
g.drawArc(x,y,radio*2,radio*2,0,360);
//计算下一个圆的位置
angle += scope;
x=(int)(radio*Math.cos(angle)+orign_x);

给你个参照实现,注意覆盖
protected void paintComponent(Graphics g)
以下贴出完整源代码

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author Hardneedl
*/
class MyPainter {
private JFrame frame;
private Brush brush;

MyPainter() {
brush = new Brush() {
public void doPaint(Graphics g) {
//创建绘图环境的副本
Graphics gg = g.create();
final int orign_x = 100, orign_y = 100, radio = 50;//圆的初始位置和半径
final double scope = 30.0 / 180.0 * Math.PI;//每次转动的角度
double angle = 0.0;
int x = orign_x + radio, y = orign_y;
g.setColor(Color.GREEN);
//按照顺时针方向画出12个同样大小的圆形
for(int i = 0; i < 12; i++) {
g.drawArc(x, y, radio * 2, radio * 2, 0, 360);