高级Java 画一个圆实现放大和缩小的操作

183 阅读1分钟

语言:java

目录结构:

image.png

代码:

  • CirclePanel

import java.awt.Graphics;

import javax.swing.JPanel;

public class CirclePanel extends JPanel{

//定义属性----r
private int r=20;
public int getR() {
	return r;
}
public void setR(int r) {
	this.r=r;
}
//设计
@Override
protected void paintComponent(Graphics g) {
	super.paintComponent(g);
	int x=getWidth()/2-r;
	int y=getHeight()/2-r;
	g.drawOval(x,y,2*r,2*r);
}
//放大
public  void big(){
	r=r+5;
	repaint();
}
//缩小
public  void small(){
	r=r-5;
	repaint();
}	

}

  • CirleEvent

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class CirleEvent extends JFrame{

//属性
CirclePanel p1 = new CirclePanel();
//设计窗体 构造方法
public CirleEvent() {
	JPanel p = new JPanel();
	p.setLayout(new BorderLayout());
	JPanel p2 = new JPanel();
	p2.setLayout(new FlowLayout());
	JButton bt1=new JButton("放大");
	ActionListener x = new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			p1.big();
		}
	};
	bt1.addActionListener(x);
	JButton bt2=new JButton("缩小");
	ActionListener y = new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			p1.small();
		}
	};
	bt2.addActionListener(y);
	p2.add(bt1);
    p2.add(bt2);
    p.add(p1,BorderLayout.CENTER);//可省略位置
    p.add(p2,BorderLayout.SOUTH);
   this.add(p);
	
}
//创建窗体	 主方法
public static void main(String[] args) {
    
    JFrame frame = new CirleEvent();
	frame.setSize(400,200);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
	
}

}

结果:

image.png

问题:

会溢出界面