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);
}
}
闽公网安备 35060202000074号