服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个浏览图片程序


import javax.swing.*; 
import java.awt.graphics; 
import java.awt.*; 
import java.awt.event.*; 

public class imageviewer extends jframe{ 

image imagefirst;//初始图像 
imagepanel panel=new imagepanel();//用来显示图像的panel 

jmenubar jmb=new jmenubar(); 

jmenu file=new jmenu("file"); 
jmenu modify=new jmenu("modify"); 

jmenuitem open=new jmenuitem("open"); 
jmenuitem exit=new jmenuitem("exit"); 

buttongroup bg=new buttongroup(); 
jradiobuttonmenuitem rate1=new jradiobuttonmenuitem("to 50%");//这三个菜单项 
jradiobuttonmenuitem rate2=new jradiobuttonmenuitem("to 100%");//用来改变图像 
jradiobuttonmenuitem rate3=new jradiobuttonmenuitem("to 200%");//显示的大小 

jtoolbar toolbar=new jtoolbar();//只有一个button简单的toolbar 
jbutton button=new jbutton("a jtoolbar contain a jbutton"); 

imageviewer(){ 

this.getcontentpane().setlayout(null); 

this.setbounds(200,200,500,400); 
this.setresizable(false); 
this.settitle("imageviewer"); 

imagefirst=java.awt.toolkit.getdefaulttoolkit().getimage("images/opean.gif"); 
panel.setimage(imagefirst); 

jmb.add(file); 
jmb.add(modify); 

open.addactionlistener(new openaction()); 
file.add(open); 
file.add(exit); 

bg.add(rate1); bg.add(rate2); bg.add(rate3); 
modify.add(rate1); 
modify.add(rate2); rate2.setselected(true); 
modify.add(rate3); 

rate1.additemlistener(new itemlistener(){ 
public void itemstatechanged(itemevent e){ 
if(rate1.isselected()==true){ 
panel.setrate(0.5); 
system.out.println("rate1 been selected!"); 
panel.repaint(); 


}); 

rate2.additemlistener(new itemlistener(){ 
public void itemstatechanged(itemevent e){ 
if(rate2.isselected()==true){ 
panel.setrate(1); 
system.out.println("rate2 been selected!"); 
panel.repaint(); 


}); 

rate3.additemlistener(new itemlistener(){ 
public void itemstatechanged(itemevent e){ 
if(rate3.isselected()==true){ 
panel.setrate(2); 
system.out.println("rate3 been selected!"); 
panel.repaint(); 


}); 
exit.addactionlistener(new actionlistener(){ 
public void actionperformed(actionevent e){ 
system.exit(0); 
}}); 

this.setjmenubar(jmb); 

panel.setbounds(0,30,this.getwidth(),this.getheight()-60); 
this.getcontentpane().add(panel); 

button.addactionlistener(new actionlistener(){ 
public void actionperformed(actionevent e){ 
joptionpane.showmessagedialog(null,this); 

}); 
toolbar.add(button); 
toolbar.setlayout(new gridlayout()); 
toolbar.setbackground(color.blue); 
toolbar.setbounds(0,0,500,30); 
this.getcontentpane().add(toolbar); 
}//swingdemo1 

//主方法 
public static void main(string argv[]){ 

jframe.setdefaultlookandfeeldecorated(true); 
imageviewer app=new imageviewer(); 
app.setvisible(true); 

app.repaint(); 


//内部类 菜单项opean处理事件 
class openaction implements actionlistener{ 
public void actionperformed(actionevent e){ 

jfilechooser fc = new jfilechooser(); 
int returnval = fc.showdialog(new imageviewer(), "open file"); 
string file = fc.getselectedfile().getpath(); 
panel.setimage(file); 
panel.repaint(); 

system.out.println("open file action performed"); 





//外部类  panel用来显示image 
class imagepanel extends jpanel 

private image image; 
private double rate=1; 

dimension offdimension; 
image offimage; 
graphics offgraphics; 

imagepanel(){ 
this.setbackground(color.blue); 


public void update(graphics g){ 
if(image!=null){ 
g.drawimage(image,0,0, 
(int)(this.getwidth()*rate/2),(int)(this.getheight()*rate/2), 
this.getrootpane()); 

else 
{g.setcolor(color.red); 
g.fillrect(0,0,(int)(250*rate),(int)(200*rate)); 


public void paint(graphics g){ 
update(g); 


public void setimage(image image){ 
this.image=image; 


public void setrate(double rate){ 
this.rate=rate; 


public void setimage(string s){ 
this.image=java.awt.toolkit.getdefaulttoolkit().getimage(s); 

扫描关注微信公众号