关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » JAVA »Java图形设计和多媒体基础

    Java图形设计和多媒体基础

    2014-12-12 00:00:00 出处:developerWorks 中国
    分享

    ITJS的这篇文章主要介绍了Java的图形设计以及多媒体处理,源码作者也做了详细的注释,对于初学者应该不难。详细请看下文。

    同心圆效果图:

    /**  
     *程序要求:新建一个600*600像素的应用程序窗口,并在窗口中绘制5个不同颜色的同心圆,  
     *所有圆心都是屏幕的中心点,相邻两个圆直接的半径相差50像素  
     *效果图如下图所示(颜色随机设置),源程序保存为Ex7_1.java。  
     *作者:wwj  
     *日期:2012/4/25  
     *功能:显示一个有5个不同颜色的同心圆  
     **/ 
    
     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("一个有5个不同颜色的同心圆");    //显示窗口名称  
             setSize(600,600);                      //设置窗口大小  
             setVisible(true);                      //设置为可见  
             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭动作  
    
         }  
    
         public void paint(Graphics 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);  
            //第二个圆  
            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);  
            //第三个圆  
            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);  
            //第四个圆  
            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);  
            //第五个圆  
            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();       
         }  
    
     }

    播放音乐和切换图片的小程序效果图:

    /**  
     *程序要求:编写一个Applet的小程序,准备5幅图片和三个音乐文件,绘制到Applet中,  
     *并增加几个按钮,控制图片的切换、放大、缩小和音乐文件的播放。  
     *作者:wwj  
     *日期:2012/4/29  
     *参考:neicole  
     *功能:能进行图片和歌曲的选择变换的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  
     {  
    
         //创建两个面板  
         JPanel p1=new JPanel();  
         JPanel p2=new JPanel();  
         JPanel p3=new JPanel();  
         //声音对象  
         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("连续");  
         JButton stop=new JButton("停止");  
         JButton nextSound=new JButton("下一首");  
         //曲目下拉列表  
         JComboBox xx;  
         String names[]={ "曲目1.wav","曲目2.wav","曲目3.wav"};  
    
        //创建画布对象  
        MyCanvasl showPhotos;  
    
         public void init()  
         {  
             //窗口布局  
             this.setLayout(new BorderLayout());  
    
             //为图片控制按钮注册监听器  
             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();  
    
            //实例化下拉列表对象  
            xx = new JComboBox(names);  
            xx.addItemListener(this);  
    
            //为控制播放音乐按钮注册监听器  
            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){       //按下循环按钮  
                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);  
             //获取当前目录下的图片  
             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);  
    
         }  
        }  
     }
    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    最全面的前端开发指南

    Windows7任务栏桌面下角的一些正在运行的图标不见了

    sql server快速删除记录方法

    SQL Server 7移动数据的6种方法

    SQL Server 2008的新压缩特性

    每个Java程序员必须知道的5个JVM命令行标志

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。