十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
;
在橫峰等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),橫峰網(wǎng)站建設(shè)費(fèi)用合理。
可以這樣寫:
import javax.swing.*;
import java.awt.*;
class C extends JFrame {
C() {
final Point point = new Point();
add(new JPanel() {
public void paintComponent(Graphics g) {
g.fillOval(point.x, point.y, 20, 20);
point.x = (point.x + 2) % getWidth();
point.y = (point.x * point.x) / 1000;???// 造就弧線的簡單二次方程。
}
});
setSize(777, 666);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
while (true) {
repaint(point.x, point.y, 50, 50);
try { Thread.sleep(10); } catch (Exception ex) {}
}
}
public static void main(String[] args) {
new C();
}
}
下面這段代碼應(yīng)該符合你的需求
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BounceThread
{ public static void main(String[] args)
{ JFrame frame = new BounceThreadFrame();
frame.show();
}
}
class BounceThreadFrame extends JFrame
{ public BounceThreadFrame()
{ setSize(300, 200);
setTitle("Bounce");
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} );
Container contentPane = getContentPane();
canvas = new JPanel();
contentPane.add(canvas, "Center");
JPanel p = new JPanel();
addButton(p, "Start",
new ActionListener()
{ public void actionPerformed(ActionEvent evt)
{ Ball b = new Ball(canvas);
b.start();
}
});
addButton(p, "Close",
new ActionListener()
{ public void actionPerformed(ActionEvent evt)
{ canvas.setVisible(false);
System.exit(0);
}
});
contentPane.add(p, "South");
}
public void addButton(Container c, String title,
ActionListener a)
{ JButton b = new JButton(title);
c.add(b);
b.addActionListener(a);
}
private JPanel canvas;
}
class Ball extends Thread
{ public Ball(JPanel b) { box = b; }
public void draw()
{ Graphics g = box.getGraphics();
g.fillOval(x, y, XSIZE, YSIZE);
g.dispose();
}
public void move()
{ if (!box.isVisible()) return;
Graphics g = box.getGraphics();
g.setXORMode(box.getBackground());
g.fillOval(x, y, XSIZE, YSIZE);
x += dx;
y += dy;
Dimension d = box.getSize();
if (x 0)
{ x = 0; dx = -dx; }
if (x + XSIZE = d.width)
{ x = d.width - XSIZE; dx = -dx; }
if (y 0)
{ y = 0; dy = -dy; }
if (y + YSIZE = d.height)
{ y = d.height - YSIZE; dy = -dy; }
g.fillOval(x, y, XSIZE, YSIZE);
g.dispose();
}
public void run()
{ try
{ draw();
for (int i = 1; i = 1000; i++)
{ move();
sleep(5);
}
}
catch(InterruptedException e) {}
}
private JPanel box;
private static final int XSIZE = 10;
private static final int YSIZE = 10;
private int x = 0;
private int y = 0;
private int dx = 2;
private int dy = 2;
}
拋磚引玉一下
我覺得該題描述了3個事物
1 小球 Ball
2 放小球的容器 BallPanel
3 小球的控制器 BallControler
public class Ball{
double R = 0d; //球的半徑
int cx;//當(dāng)前小球中心X坐標(biāo)
int cy;//當(dāng)前小球中心Y坐標(biāo)
double angle;//小球運(yùn)動弧度 ,與cx,cy結(jié)合起來用來算出 小球移動到當(dāng)前時的前一個坐標(biāo),及移動到下一個點的坐標(biāo)
int speed;//小球運(yùn)動速度,毫秒數(shù)
}
public class BallPanel{
double width;//放小球的容器寬
double height;//放小球的容器的高
BallControler []BallControlers;//放了多少個小球
}
public class BallControler extends Thread{
Ball tBall;//該控制器控制的小球
BallControler(Ball tBall){
this.tBall = tBall;
}
private int [] getNextPosition(){
/**
返回下一點的x,y坐標(biāo)
*/
}
private int [] getPreviousPosition(){
/**
返回前一點的x,y坐標(biāo)
*/
}
private void moveBall(int x,int y){
//移動小球到指定的x,y坐標(biāo)。
//有必要的話,可以記錄小球的運(yùn)動軌跡到堆棧中
}
public void run(){
Thread.sleep(tBall.speed);//按照小球規(guī)定的速度移動
//下面的代碼,計算并且移動小球到下一個點,計算是否碰壁(當(dāng)前小球中心坐標(biāo)+半徑是否超過BallPanel的長,或者高等),并且移動小球
}
}
java是編程語言里比較難學(xué)的一門,如果有心從事編程方向的工作,最好到專業(yè)機(jī)構(gòu)學(xué)習(xí)并有更多的項目實踐,更貼近市場,這樣更有利于將來的發(fā)展。
//Checkers.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//Checkers類
public class Checkers extends JFrame implements ActionListener {
//變量定義
CheckersPanel checkers = new CheckersPanel();
JButton startButton = new JButton("start");
JButton stopButton = new JButton("stop");
//構(gòu)造函數(shù)
public Checkers(){
super("Checkers");
setSize(210,170);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
BorderLayout border = new BorderLayout();
pane.setLayout(border);
pane.add(checkers,"Center");
JPanel buttonPanel = new JPanel();
startButton.addActionListener(this);
buttonPanel.add(startButton);
stopButton.addActionListener(this);
stopButton.setEnabled(false);
buttonPanel.add(stopButton);
pane.add(buttonPanel,"South");
setContentPane(pane);
show();
}
//響應(yīng)用戶動作
public void actionPerformed(ActionEvent evt){
if(evt.getSource() == startButton){
checkers.playAnimation();
startButton.setEnabled(false);
stopButton.setEnabled(true);
}else{
checkers.stopAnimation();
startButton.setEnabled(true);
stopButton.setEnabled(false);
}
}
//主函數(shù)
public static void main(String[] arguments){
Checkers ck = new Checkers();
}
}
//CheckersPanel類
class CheckersPanel extends JPanel implements Runnable{
//變量定義
private Thread runner;
int xPos = 5;
int xMove = 4;
//播放動畫
void playAnimation(){
if (runner ==null);{
runner = new Thread(this);
runner.start();
}
}
//停止動畫
void stopAnimation(){
if (runner !=null);{
runner = null;
}
}
//運(yùn)行
public void run(){
Thread thisThread = Thread.currentThread();
while(runner ==thisThread){
xPos += xMove;
if ((xPos 105)|(xPos 5))
xMove *= -1;
repaint();
try{
Thread.sleep(100);
}catch(InterruptedException e){}
}
}
//畫圖形
public void paintComponent(Graphics comp){
Graphics2D comp2D = (Graphics2D)comp;
comp2D.setColor(Color.blue);
comp2D.fillRect(0,0,100,100);
comp2D.setColor(Color.white);
comp2D.fillRect(100,0,100,100);
comp2D.setColor(Color.black);
comp2D.fillOval(xPos,5,90,90);
}
}