⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphkw.java

📁 java图形操作小软件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------
//------9120004  王喆 200009207 2003.11
//---------------------------------------------------
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;

public class GraphKW extends WindowAdapter implements ActionListener, MouseListener {

	Frame f;		//总窗体
	Dialog d;		//对话框

	FileDialog fOpen;	//文件打开对话框
	FileDialog fSave;	//文件保存对话框

	MenuBar mb;
	Menu mFileOpt;		//文件菜单
	Menu mEdit;		//编辑菜单
	Menu mHelp;		//帮助菜单
	Menu mOverturn;		//翻转子菜单
	Menu mMOHO;		//模糊子菜单

	Menu popmOverturn;	//翻转弹出子菜单
	Menu popmMOHO;		//模糊弹出子菜单

	MenuItem itmLoad;
	MenuItem itmSave;
	MenuItem itmSaveAs;
	MenuItem itmExit;
	MenuItem itmAbout;

	MenuItem popUndo;	//弹出式菜单按钮
	MenuItem popFANSE;
	MenuItem popJUNHENG;
	MenuItem popSHUIPING;
	MenuItem popCHUIZHI;
	MenuItem popXIANXING;
	MenuItem popZHONGZHI;
	MenuItem popBIANYUAN;
	MenuItem popHENGXIANG;
	MenuItem popSHUXIANG;
	MenuItem popZONGMOHU;
	MenuItem popFUDIAO;

	MenuItem e_Undo;
	MenuItem e_FANSE;
	MenuItem e_JUNHENG;
	MenuItem e_SHUIPING;
	MenuItem e_CHUIZHI;
	MenuItem e_XIANXING;
	MenuItem e_ZHONGZHI;
	MenuItem e_BIANYUAN;
	MenuItem e_HENGXIANG;
	MenuItem e_SHUXIANG;
	MenuItem e_ZONGMOHU;
	MenuItem e_FUDIAO;

	PopupMenu popPanel; //弹出式菜单
	MyCanvas canvas;
	
	//---------------------------------------------------	//主程序
	public static void main(String[] args) {
		GraphKW app=new GraphKW();
		app.go();
	}
	//---------------------------------------------------
	public void go() {
		f=new Frame("BMP_Work     9120004 kingwise 200009207");	//文件标题
		f.addWindowListener(this);

		f.setLayout(new BorderLayout());

		Color myColor=new Color(128,128,128);
		f.setBackground(myColor);	//改底色

	//-----------------------------------------------文件菜单
		itmLoad=new MenuItem("打开图象文件(24位色)");	
		itmLoad.addActionListener(this);

		itmSave=new MenuItem("保存图象文件");
		itmSave.addActionListener(this);

		itmSaveAs=new MenuItem("另存为");
		itmSaveAs.addActionListener(this);

		itmExit=new MenuItem("退出");
		itmExit.addActionListener(this);

		itmAbout=new MenuItem("关于");
		itmAbout.addActionListener(this);

	//-----------------------------------------------编辑菜单
		popUndo=new MenuItem("撤销一步");
		popUndo.addActionListener(this);

		popFANSE=new MenuItem("反色");
		popFANSE.addActionListener(this);

		popJUNHENG=new MenuItem("均衡");
		popJUNHENG.addActionListener(this);

		popSHUIPING=new MenuItem("水平镜像");
		popSHUIPING.addActionListener(this);

		popCHUIZHI=new MenuItem("垂直镜像");
		popCHUIZHI.addActionListener(this);

		popXIANXING=new MenuItem("线性平滑滤波");
		popXIANXING.addActionListener(this);

		popZHONGZHI=new MenuItem("中值滤波");
		popZHONGZHI.addActionListener(this);

		popBIANYUAN=new MenuItem("边缘识别");
		popBIANYUAN.addActionListener(this);

		popHENGXIANG=new MenuItem("横向模糊");
		popHENGXIANG.addActionListener(this);

		popSHUXIANG=new MenuItem("竖向模糊");
		popSHUXIANG.addActionListener(this);

		popZONGMOHU=new MenuItem("总体模糊");
		popZONGMOHU.addActionListener(this);

		popFUDIAO=new MenuItem("浮雕效果");
		popFUDIAO.addActionListener(this);


		e_Undo=new MenuItem("撤销一步");
		e_Undo.addActionListener(this);

		e_FANSE=new MenuItem("反色");
		e_FANSE.addActionListener(this);

		e_JUNHENG=new MenuItem("均衡");
		e_JUNHENG.addActionListener(this);

		e_SHUIPING=new MenuItem("水平镜像");
		e_SHUIPING.addActionListener(this);

		e_CHUIZHI=new MenuItem("垂直镜像");
		e_CHUIZHI.addActionListener(this);

		e_XIANXING=new MenuItem("线性平滑滤波");
		e_XIANXING.addActionListener(this);

		e_ZHONGZHI=new MenuItem("中值滤波");
		e_ZHONGZHI.addActionListener(this);

		e_BIANYUAN=new MenuItem("边缘识别");
		e_BIANYUAN.addActionListener(this);

		e_HENGXIANG=new MenuItem("横向模糊");
		e_HENGXIANG.addActionListener(this);

		e_SHUXIANG=new MenuItem("竖向模糊");
		e_SHUXIANG.addActionListener(this);

		e_ZONGMOHU=new MenuItem("总体模糊");
		e_ZONGMOHU.addActionListener(this);

		e_FUDIAO=new MenuItem("浮雕效果");
		e_FUDIAO.addActionListener(this);

		mOverturn=new Menu("翻转");
		mOverturn.add(e_SHUIPING);
		mOverturn.addSeparator();
		mOverturn.add(e_CHUIZHI);

		mMOHO=new Menu("模糊");
		mMOHO.add(e_HENGXIANG);
		mMOHO.addSeparator();
		mMOHO.add(e_SHUXIANG);
		mMOHO.addSeparator();
		mMOHO.add(e_ZONGMOHU);

		popmOverturn=new Menu("翻转");		//翻转弹出子菜单
		popmOverturn.add(popSHUIPING);
		popmOverturn.add(popCHUIZHI);

		popmMOHO=new Menu("模糊");		//模糊弹出子菜单
		popmMOHO.add(popHENGXIANG);
		popmMOHO.add(popSHUXIANG);
		popmMOHO.add(popZONGMOHU);

		mFileOpt=new Menu("文件");
		mFileOpt.add(itmLoad);
		mFileOpt.addSeparator();
		mFileOpt.add(itmSave);
		mFileOpt.addSeparator();
		mFileOpt.add(itmSaveAs);
		mFileOpt.addSeparator();
		mFileOpt.add(itmExit);

		mEdit=new Menu("编辑");
		mEdit.add(e_Undo);
		mEdit.addSeparator();
		mEdit.add(e_FANSE);
		mEdit.addSeparator();
		mEdit.add(e_JUNHENG);
		mEdit.addSeparator();
		mEdit.add(mOverturn);	//翻转子菜单
		mEdit.addSeparator();
		mEdit.add(e_XIANXING);
		mEdit.addSeparator();
		mEdit.add(e_ZHONGZHI);
		mEdit.addSeparator();
		mEdit.add(e_BIANYUAN);
		mEdit.addSeparator();
		mEdit.add(mMOHO);	//模糊子菜单
		mEdit.addSeparator();
		mEdit.add(e_FUDIAO);

		mHelp=new Menu("帮助");
		mHelp.add(itmAbout);

		mb=new MenuBar();
		mb.add(mFileOpt);
		mb.add(mEdit);
		mb.add(mHelp);


		fOpen=new FileDialog(f, "打开", FileDialog.LOAD);
		fSave=new FileDialog(f, "另存为", FileDialog.SAVE);



		popPanel=new PopupMenu();//弹出式菜单
		popPanel.add(popFANSE);
		popPanel.add(popJUNHENG);
		popPanel.add(popmOverturn);//翻转弹出子菜单
		popPanel.add(popXIANXING);
		popPanel.add(popZHONGZHI);
		popPanel.add(popBIANYUAN);
		popPanel.add(popmMOHO);//模糊弹出子菜单
		popPanel.add(popFUDIAO);
		popPanel.add(popUndo);

		canvas=new MyCanvas();		//画布
		canvas.addMouseListener(this);	//鼠标监听器

		f.add(canvas, BorderLayout.CENTER);
		f.add(popPanel);
		f.setMenuBar(mb);

		f.setSize(500, 300);
		f.show();
		setBtnStatus();

		d=new Dialog(f,"Kingwise Workgroup 2003.11",true);
		d.add("Center",new Label("9120004班 王喆(kingwise)200009207"));
		d.pack();
		d.addWindowListener(this);
	}
	//---------------------------------------------------//结束程序
	public void windowClosing(WindowEvent e) {
		if (e.getSource().equals(f)) System.exit(0);
		else d.setVisible(false);
	}

	//---------------------------------------------------//鼠标监听

	public void mouseClicked(MouseEvent e) {
		popPanel.show(canvas, e.getX(), e.getY());
	}
	public void mousePressed(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}


	//---------------------------------------------------
	public void actionPerformed(ActionEvent e) {			//判断操作
		if (e.getSource().equals(itmExit)) {			//退出
			System.exit(0);
	        } else if (e.getSource().equals(itmLoad)) {		//装载图象
			fOpen.show();
			if (fOpen.getFile()!=null) {
				canvas.load(fOpen.getDirectory()+fOpen.getFile());
				f.setTitle("Kingwise  当前文件:"+fOpen.getDirectory()+fOpen.getFile());
			}
			setBtnStatus();
		} else if (e.getSource().equals(itmSave)) {		//保存图象
        		canvas.save();
			setBtnStatus();
		} else if (e.getSource().equals(itmSaveAs)) {		//另存为
			fSave.show();
			if (fSave.getFile()!=null) {
				canvas.saveAs(fSave.getDirectory()+fSave.getFile());
				f.setTitle("Kingwise  当前文件:"+fSave.getDirectory()+fSave.getFile());	//显示标题
			}
		} else if (e.getSource().equals(itmAbout)) {		//关于
			d.setVisible(true);
		} else if (e.getSource().equals(popUndo)||e.getSource().equals(e_Undo)) {		//重复
        		canvas.undo();
			setBtnStatus();
		} else if (e.getSource().equals(popFANSE)||e.getSource().equals(e_FANSE)) {		//反色
        		canvas.doFileter("FAN_SE");
			setBtnStatus();
		} else if (e.getSource().equals(popJUNHENG)||e.getSource().equals(e_JUNHENG)) {		//均衡
        		canvas.doFileter("JUN_HENG");
			setBtnStatus();
		} else if (e.getSource().equals(popSHUIPING)||e.getSource().equals(e_SHUIPING)) {		//水平翻转
        		canvas.doFileter("SHUI_PING");
			setBtnStatus();
		} else if (e.getSource().equals(popCHUIZHI)||e.getSource().equals(e_CHUIZHI)) {		//垂直翻转
        		canvas.doFileter("CHUI_ZHI");
			setBtnStatus();
		} else if (e.getSource().equals(popXIANXING)||e.getSource().equals(e_XIANXING)) {		//线性平滑
        		canvas.doFileter("XIAN_XING_PING_HUA");
			setBtnStatus();
		} else if (e.getSource().equals(popZHONGZHI)||e.getSource().equals(e_ZHONGZHI)) {		//中值平衡
        		canvas.doFileter("ZHONG_ZHI");
			setBtnStatus();
		} else if (e.getSource().equals(popBIANYUAN)||e.getSource().equals(e_BIANYUAN)) {		//线性锐化
        		canvas.doFileter("XIAN_XING_RUI_HUA");
			setBtnStatus();
		} else if (e.getSource().equals(popHENGXIANG)||e.getSource().equals(e_HENGXIANG)) {		//横向模糊
        		canvas.doFileter("HENG_XIANG_MO_HU");
			setBtnStatus();
		} else if (e.getSource().equals(popSHUXIANG)||e.getSource().equals(e_SHUXIANG)) {		//竖向模糊
        		canvas.doFileter("SHU_XIANG_MO_HU");
			setBtnStatus();
		} else if (e.getSource().equals(popZONGMOHU)||e.getSource().equals(e_ZONGMOHU)) {		//总体模糊
        		canvas.doFileter("ZONG_TI_MO_HU");
			setBtnStatus();
		} else if (e.getSource().equals(popFUDIAO)||e.getSource().equals(e_FUDIAO)) {		//浮雕效果
        		canvas.doFileter("FU_DIAO_XIAO_GUO");
			setBtnStatus();
		}
	}
	//---------------------------------------------------//设置按钮状态
	private void setBtnStatus() {
		itmSaveAs.setEnabled(canvas.file_loaded);
		itmSave.setEnabled(canvas.flag_changed);

		popUndo.setEnabled(canvas.flag_changed);
		popFANSE.setEnabled(canvas.file_loaded);
		popJUNHENG.setEnabled(canvas.file_loaded);
		popSHUIPING.setEnabled(canvas.file_loaded);
		popCHUIZHI.setEnabled(canvas.file_loaded);
		popXIANXING.setEnabled(canvas.file_loaded);
		popZHONGZHI.setEnabled(canvas.file_loaded);
		popBIANYUAN.setEnabled(canvas.file_loaded);
		popHENGXIANG.setEnabled(canvas.file_loaded);
		popSHUXIANG.setEnabled(canvas.file_loaded);
		popZONGMOHU.setEnabled(canvas.file_loaded);
		popFUDIAO.setEnabled(canvas.file_loaded);

		e_Undo.setEnabled(canvas.flag_changed);
		e_FANSE.setEnabled(canvas.file_loaded);
		e_JUNHENG.setEnabled(canvas.file_loaded);
		e_SHUIPING.setEnabled(canvas.file_loaded);
		e_CHUIZHI.setEnabled(canvas.file_loaded);
		e_XIANXING.setEnabled(canvas.file_loaded);
		e_ZHONGZHI.setEnabled(canvas.file_loaded);
		e_BIANYUAN.setEnabled(canvas.file_loaded);
		e_HENGXIANG.setEnabled(canvas.file_loaded);
		e_SHUXIANG.setEnabled(canvas.file_loaded);
		e_ZONGMOHU.setEnabled(canvas.file_loaded);
		e_FUDIAO.setEnabled(canvas.file_loaded);

		if (canvas.flag_redo_or_undo) {popUndo.setLabel("恢复一步");e_Undo.setLabel("恢复一步");}	//重复和撤销反复出现
		else {popUndo.setLabel("撤销一步");e_Undo.setLabel("撤销一步");}


	}
}
//BMPFileAccessor调入文件=============================================

class BMPFileAccessor {
	private static int readInt(RandomAccessFile raf, int offset) throws IOException {
		raf.seek(offset);
		int b1=raf.read(), b2=raf.read(), b3=raf.read(), b4=raf.read();
		return b1+(b2<<8)+(b3<<16)+(b4<<24);
	}
	private static void writeInt(RandomAccessFile raf, int offset, int n) throws IOException {
		raf.seek(offset);
		int b1=n&255, b2=(n>>8)&255, b3=(n>>16)&255, b4=n>>24;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -