Java設(shè)計(jì)圖形與多媒體處理
本文實(shí)現(xiàn)了兩個(gè)效果:
第一種,同心圓效果圖:

/**
*程序要求:新建一個(gè)600*600像素的應(yīng)用程序窗口,并在窗口中繪制5個(gè)不同顏色的同心圓,
*所有圓心都是屏幕的中心點(diǎn),相鄰兩個(gè)圓直接的半徑相差50像素
*效果圖如下圖所示(顏色隨機(jī)設(shè)置),源程序保存為Ex7_1.java。
*作者:wwj
*日期:2012/4/25
*功能:顯示一個(gè)有5個(gè)不同顏色的同心圓
**/
import javax.swing.*;
import java.awt.*;
import java.awt.Color;
public class Ex7_1 extends JFrame
{
int red,green,blue;
Color color;
public Ex7_1()
{
super("一個(gè)有5個(gè)不同顏色的同心圓"); //顯示窗口名稱
setSize(600,600); //設(shè)置窗口大小
setVisible(true); //設(shè)置為可見
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗口關(guān)閉動(dòng)作
}
public void paint(Graphics g)
{
//第一個(gè)圓
red=(int)(Math.random()*255);
green=(int)(Math.random()*255);
blue=(int)(Math.random()*255);
color=new Color(red,green,blue);
g.setColor(color);
g.fillOval(175,175,250,250);
//第二個(gè)圓
red=(int)(Math.random()*255);
green=(int)(Math.random()*255);
blue=(int)(Math.random()*255);
color=new Color(red,green,blue);
g.setColor(color);
g.fillOval(200,200,200,200);
//第三個(gè)圓
red=(int)(Math.random()*255);
green=(int)(Math.random()*255);
blue=(int)(Math.random()*255);
color=new Color(red,green,blue);
g.setColor(color);
g.fillOval(225,225,150,150);
//第四個(gè)圓
red=(int)(Math.random()*255);
green=(int)(Math.random()*255);
blue=(int)(Math.random()*255);
color=new Color(red,green,blue);
g.setColor(color);
g.fillOval(250,250,100,100);
//第五個(gè)圓
red=(int)(Math.random()*255);
green=(int)(Math.random()*255);
blue=(int)(Math.random()*255);
color=new Color(red,green,blue);
g.setColor(color);
g.fillOval(275,275,50,50);
}
public static void main(String[] args)
{
Ex7_1 e = new Ex7_1();
}
}
第二種,播放音樂和切換圖片的小程序效果圖:

/**
*程序要求:編寫一個(gè)Applet的小程序,準(zhǔn)備5幅圖片和三個(gè)音樂文件,繪制到Applet中,
*并增加幾個(gè)按鈕,控制圖片的切換、放大、縮小和音樂文件的播放。
*作者:wwj
*日期:2012/4/29
*參考:neicole
*功能:能進(jìn)行圖片和歌曲的選擇變換的applet小程序
**/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.applet.AudioClip;
public class Ex7_2 extends Applet implements ActionListener,ItemListener
{
//創(chuàng)建兩個(gè)面板
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
//聲音對(duì)象
AudioClip[] sound=new AudioClip[3];
int playingSong=0;
//切換圖片的按鈕
JButton lastPic=new JButton("上一張");
JButton setLarge=new JButton("放大");
JButton setLittle=new JButton("縮小");
JButton nextPic=new JButton("下一張");
//切換歌曲的按鈕
JButton lastSound=new JButton("上一首");
JButton play=new JButton("播放");
JButton loop=new JButton("連續(xù)");
JButton stop=new JButton("停止");
JButton nextSound=new JButton("下一首");
//曲目下拉列表
JComboBox xx;
String names[]={ "曲目1.wav","曲目2.wav","曲目3.wav"};
//創(chuàng)建畫布對(duì)象
MyCanvasl showPhotos;
public void init()
{
//窗口布局
this.setLayout(new BorderLayout());
//為圖片控制按鈕注冊(cè)監(jiān)聽器
lastPic.addActionListener(this);
setLarge.addActionListener(this);
setLittle.addActionListener(this);
nextPic.addActionListener(this);
//向面板p1添加組件
p1.add(lastPic);
p1.add(setLarge);
p1.add(setLittle);
p1.add(nextPic);
p1.repaint();
//實(shí)例化下拉列表對(duì)象
xx = new JComboBox(names);
xx.addItemListener(this);
//為控制播放音樂按鈕注冊(cè)監(jiān)聽器
lastSound.addActionListener(this);
play.addActionListener(this);
loop.addActionListener(this);
stop.addActionListener(this);
nextSound.addActionListener(this);
for(int i=0;i<3;i++)
{
sound[i]=getAudioClip(getCodeBase(),"music/"+"曲目"
+Integer.toString(i+1)+".wav");
}
//向面板p2添加組件
p2.add(xx);
p2.add(lastSound);
p2.add(play);
p2.add(loop);
p2.add(stop);
p2.add(nextSound);
p2.repaint();
showPhotos = new MyCanvasl();
p3.add(showPhotos);
p3.repaint();
//把面板p1和p2分別布置到窗口的北部和南部
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.SOUTH);
add(p3,BorderLayout.CENTER);
this.repaint();
}
//按鈕的事件處理
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == lastPic){
showPhotos.changePhotoShow('P');
}
else if(e.getSource() == nextPic){
showPhotos.changePhotoShow('N');
}
else if(e.getSource() == setLarge){
showPhotos.changePhotoSize('B');
}
else if(e.getSource() == setLittle){
showPhotos.changePhotoSize('S');
}
else if(e.getSource()==lastSound){ //上一首
sound[playingSong].stop();
playingSong=(playingSong-1+3)%3;
xx.setSelectedIndex(playingSong);
sound[playingSong].play();
}
else if(e.getSource()==play){ //按下播放按鈕
sound[playingSong].play();
}
else if(e.getSource()==loop){ //按下循環(huán)按鈕
sound[playingSong].loop();
}
else if(e.getSource()==stop){ //按下停止按鈕
sound[playingSong].stop();
}
else{ //下一首
sound[playingSong].stop();
playingSong=(playingSong+1)%3;
xx.setSelectedIndex(playingSong);
sound[playingSong].play();
}
}
//下拉列表的事件處理
public void itemStateChanged(ItemEvent e)
{
sound[playingSong].stop();
sound[playingSong]=getAudioClip(getCodeBase(),"music/"+xx.getSelectedItem());
}
class MyCanvasl extends Canvas
{
public Image[] img=new Image[5];
int MaxWidth = 600;
int MaxHeight = 500;
int nowImageIndex = 0;
int coordinateX = 0;
int coordinateY = 0;
int currentWidth = MaxWidth;
int currentHeight = MaxHeight;
MyCanvasl(){
setSize(MaxWidth,MaxHeight);
//獲取當(dāng)前目錄下的圖片
for(int i=0;i<5;i++){
img[i]=getImage(getCodeBase(),"image/"+Integer.toString(i+1)+".jpg");
}
}
private void changePhotoIndex(int index){
nowImageIndex = index;
changePhotoSize('M');
}
public void changePhotoShow(char command){
if('P' == command){
changePhotoIndex((nowImageIndex + 5 - 1 ) % 5);
}
else if('N' == command){
changePhotoIndex((nowImageIndex + 1) % 5);
}
}
public void changePhotoSize(char command){
if ('M' == command){
currentWidth = MaxWidth;
currentHeight = MaxHeight;
}
else if ('B' == command){
if(MaxWidth >= (currentWidth + 100) && MaxHeight >= (currentHeight + 100)){
currentWidth += 100;
currentHeight += 100;
}
}
else if('S' == command){
if((0 < (currentWidth - 100)) && (0 < (currentHeight - 100))){
currentWidth = currentWidth - 100;
currentHeight = currentHeight - 100;
}
}
coordinateX = (MaxWidth - currentWidth) / 2;
coordinateY = (MaxHeight - currentHeight) / 2;
repaint();
}
//paint方法用來在窗口顯示圖片
public void paint(Graphics g){
g.drawImage(img[nowImageIndex],coordinateX,coordinateY,currentWidth,currentHeight,this);
}
}
}
以上就是關(guān)于Java的圖形設(shè)計(jì)以及多媒體處理的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Java截取特定兩個(gè)標(biāo)記之間的字符串實(shí)例
下面小編就為大家?guī)硪黄狫ava截取特定兩個(gè)標(biāo)記之間的字符串實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
Java網(wǎng)絡(luò)編程TCP實(shí)現(xiàn)聊天功能
這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程TCP實(shí)現(xiàn)聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project
這篇文章主要介紹了IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
java實(shí)現(xiàn)動(dòng)態(tài)數(shù)組
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
springboot2.x默認(rèn)使用的代理是cglib代理操作
這篇文章主要介紹了springboot2.x默認(rèn)使用的代理是cglib代理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

