欢迎光临散文网 会员登陆 & 注册

Java swing图形编程实例,设置图片文件夹,图片跑动和大小-《自学内容》【诗书画唱】

2020-06-02 22:16 作者:诗书画唱  | 我要投稿

gif透明背景图片素材:




素材获取方法:


笔记:


建图片文件夹的方法:




实例一:点击开始按钮后单个图片会跑动(简易版)





package swingXianCheng;


public class mains {


public static void main(String[] args) {


new swingXianCheng();

}


}

package swingXianCheng;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class swingXianCheng extends JFrame {

// mianBan:面板

mianBanClass mianBan=new mianBanClass();

//startAnNiu开始的按钮

JButton startAnNiu=new JButton("开始") ;

//firstWeiYi开始的位移

int firstWeiYi=0;

//image形象

Image img=Toolkit.getDefaultToolkit().createImage("imgRun\\gif.gif");

//toolkit工具包

//swingXianCheng:swing线程

public swingXianCheng() {

startAnNiu.addActionListener (new ActionListener(){

@Override

public void actionPerformed (ActionEvent e) {

//thread线

//线程(英文:thread)

new MyThread().start();

//start()可以用以启动线程

//start开始

}


}) ;

mianBan.add(startAnNiu) ;

add(mianBan);

setSize(900,600) ;

setLocation(200,100) ;

//operation运作

//exit退出

setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) ;

setVisible(true) ;}

class MyThread extends Thread{

@Override

public void run() {

// firstWeiYi<=800改为true后图片点击开始后就会一直跑

while (firstWeiYi<=800) {

try {

Thread.sleep(100) ;

//线程休眠(暂停占用CPU)100毫秒  主要是用于自己的软件设置的时间问题,

//这个软件设置不能大于2000.

//Thread sleep()休眠就是让线程进入休眠状态TIMED_WAITING,

//sleep("毫秒数"),当休眠时间到了之后继续线程。

//一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,

//每条线程并行执行不同的任务。

//捕捉异常

catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace() ;}

firstWeiYi+=15;

mianBan.repaint() ;

//repaint 重绘此组件


//paintComponent()方法绘图后, 在需要重新

//绘制图形时,必须通过相应的事件来调

//用repaint()方法。


//component 组成部分,C++ Builder中叫组件,Delphi中叫部件,

//(简而言之,组件就是对象。)

//C++Builder是由Borland公司推出的一款可视化集成开发工具。

//Delphi,是Windows平台下著名的快速应用程序开发工具。

//delphi德尔斐[ˈdɛlfi]

}

}}

//mianBanClass面板类

class mianBanClass extends JPanel{

@Override

//graphics图形,在Java中是所有图形上下文的抽象基类

//paint描绘

public void paint(Graphics g){

super.paint(g) ;

//draw绘制

g.drawImage (img,firstWeiYi, 50,this) ;

//g .drawImage (img,firstWeiYi,150,this) ;

//g. drawImage (img, firstWeiYi,249,this) ;

//g.drawImage (img,firstWeiYi,350,this) ;

}}}

实例二:点击开始按钮后多图片会跑动,跑步幅度不同(简易版)



package xianChengLiZiShenJI;


public class mains {


public static void main(String[] args) {


new swingXianCheng();

}


}


package xianChengLiZiShenJI;


import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;


public class swingXianCheng extends JFrame {

mianBanClass mianBan=new mianBanClass();

JButton startAnNiu=new JButton("开始") ;

//int x=30;

int[] weiYiShuZu={50,50,50,50};

Image img=Toolkit. getDefaultToolkit().

createImage("imgRun\\gif.gif");


public swingXianCheng() {

startAnNiu.addActionListener (new ActionListener(){

@Override

public void actionPerformed (ActionEvent e) {


new MyThread().start() ;

//start()可以用以启动线程

//start开始

}


}) ;

mianBan. add(startAnNiu) ;

add(mianBan) ;

setSize(900,600) ;

setLocation(200,100) ;

setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE) ;

setVisible(true) ;}

class MyThread extends Thread{

// suiJiShu随机数

Random suiJiShu=new Random() ;

@Override

public void run() {


// while (x<=800) {

while (true) {

try {

Thread.sleep(100) ;

//线程休眠(暂停占用CPU)100毫秒  主要是用于自己的软件设置的时间问题,

//这个软件设置不能大于2000.

//Thread sleep()休眠就是让线程进入休眠状态TIMED_WAITING,

//sleep("毫秒数"),当休眠时间到了之后继续线程。

//一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,

//每条线程并行执行不同的任务。

//捕捉异常

catch (InterruptedException e1) {

// TODO Auto-generated catch block

e1.printStackTrace() ;}

for(int i=0;i<weiYiShuZu. length; i++) {

weiYiShuZu[i]+=10+suiJiShu.nextInt (20);

//如果num=10+ran.nextInt (20),那么10<=num<10+20

//int[] a=new int[rand.nextint(20)+1]; 

//整数范围是[0,20)

//Java nextInt()函数 nextInt(int num) 能接受一个整数作为它所产生的随机整数的上限,

//下限为零,比如: nextInt(4)将产生0,1,2,3这4个数字中的任何一个数字,注意这里不是0-4,而是0-3。

//但下限总是零,不能更改,所以若要达到非零下限的效果,

//必须把上限减去下限的结果传给 nextInt( ),然后把下限加入 nextInt( ) 返回的整数。

}

mianBan.repaint() ;

}

}}


class mianBanClass extends JPanel{

@Override

public void paint(Graphics g){

super .paint(g) ;

g.drawImage (img,weiYiShuZu[0], 50,this) ;

g .drawImage (img,weiYiShuZu[1],150,this) ;

g. drawImage (img,weiYiShuZu[2],249,this) ;

g.drawImage (img, weiYiShuZu[3],350,this) ;

}}}

实例三:设置图片背景和大小,无切换,点击按钮后跑动。

package myGameWuQieHuan;


public class mains {


public static void main(String[] args) {


new GameJFrameClass();

}


}

package myGameWuQieHuan;

import java.awt.BorderLayout;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class GameJFrameClass extends JFrame {

class GamePanelClass extends JPanel {

public void paint(Graphics g) {

super.paint(g);

//beiJingTuPianShuZu背景图片数组

for (int i = 0; i < beiJingTuPianShuZu.length; i++) {

g.drawImage(beiJingTuPianShuZu[i], 0,

(getHeight() * i) / 4, getWidth(),

getHeight() / 4, this);

g.drawImage(imgRun[i], firstWeiYi[i],

(getHeight() * i) / 4 + 30,

getWidth()/8, getHeight() / 5, this);

}}

}

public static void main(String[] args) {

new GameJFrameClass();

}


Image[] beiJingTuPianShuZu = new Image[4];

Image[] imgRun = new Image[4];

GamePanelClass gamePanel = new GamePanelClass();

JPanel controlPanel = new JPanel();

JButton startButton = new JButton("开始");

int[] firstWeiYi = new int[4];

public GameJFrameClass() {

for (int i = 0; i < beiJingTuPianShuZu.length; i++) {

beiJingTuPianShuZu[i] = Toolkit.

getDefaultToolkit().createImage(

"imgBack\\" + (i+1) + ".jpg");

imgRun[i] = Toolkit.getDefaultToolkit().createImage(

"imgRun\\gif" + (i+1 ) + ".gif");

}

startButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new ThreadClass().start() ;

}


});



controlPanel.add(startButton);

controlPanel.setBorder(BorderFactory.

createTitledBorder("游戏控制器"));

add(gamePanel, BorderLayout.CENTER);

add(controlPanel, BorderLayout.SOUTH);

setTitle("赛马游戏");


setSize(1100, 600);




setLocation(150, 100);




setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


setVisible(true);




}


class ThreadClass extends Thread{

Random ran=new Random() ;

@Override

public void run() {


while (true) {


try {

Thread.sleep(100) ;


catch (InterruptedException e) {

e.printStackTrace() ;}

for(int i=0;i<firstWeiYi. length; i++) {

firstWeiYi[i]+=10+ran.nextInt (20);


}

//gamePanel.repaint() ;这句代码可有可无

//repaint 重绘此组件


//paintComponent()方法绘图后, 在需要重新

//绘制图形时,必须通过相应的事件来调

//用repaint()方法。

}

}}


}


Java swing图形编程实例,设置图片文件夹,图片跑动和大小-《自学内容》【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律