本文实现了两个效果:
第一种,同心圆效果图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/** *程序要求:新建一个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(); } } |
第二种,播放音乐和切换图片的小程序效果图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
/** *程序要求:编写一个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 ); } } } |
以上就是关于Java的图形设计以及多媒体处理的全部内容,希望对大家的学习有所帮助。