java 用swing类画出圆遇到边框可以弹回的小程序
import javax.swing.*;
import java.awt.*;
public class SimpleCarton{
JFrame frame;
MyPanel panel;
int x = 50;
int y = 50;
boolean xMinus = false; //if true,minus
boolean xAdd = true;//if true,add;initialize with true,the oval can move
boolean yMinus = false; //if true,minus
boolean yAdd = true;//if true,add;initialize with true,the oval can move
int w = 50;//the width of oval
int h = 50;//the height of oval
public static void main(String[] args){
SimpleCarton sc = new SimpleCarton();
sc.go();
}
public void go(){
//initialize the frame layout
frame = new JFrame("Simple Carton");
panel = new MyPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.setSize(500, 500);
frame.setVisible(true);
//change the coordinate and repaint the figure
while(true){
changeCoordinate();
panel.repaint();
try{
Thread.sleep(50); //program delay 50 milliseconds every time
}catch(Exception ex){ }
}
}
public void changeCoordinate(){
if(x >= (panel.getWidth()-w)){ //oval moves to the right border
xMinus = true;
xAdd = false;
}
if(x <= 0){ //oval moves to the left border
xAdd = true;
xMinus = false;
}
if(xMinus == true){
x--;
}
if(xAdd == true){
x++;
}
if(y >= (panel.getHeight()-h)){ //oval moves to the bottom
yMinus = true;
yAdd = false;
}
if(y <= 0){ //oval moves to the top
yAdd = true;
yMinus = false;
}
if(yMinus == true){
y--;
}
if(yAdd == true){
y++;
}
}
class MyPanel extends JPanel{
public void paintComponent(Graphics g){
//before each repaint,set background to be white so as to erase the last time imprint
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
//uese the new coordinate to repaint new figure
g.setColor(Color.orange);
g.fillOval(x, y, w, h);
}
}
}在这里插入代码片
因为图像是移动的,结果不太好展示,所以大家可以自己运行一下看结果。