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

📄 sketchframe.java

📁 用Java实现的网络画图程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;
import java.awt.print.*;
import java.applet.Applet;
import com.sun.j3d.utils.applet.MainFrame;
	
public class SketchFrame extends JFrame implements Constants,ActionListener,Observer{
	public SketchFrame(String title,Sketcher app){
		
		
		this.app=app;
		windowTitle=title+":";
		setTitle(windowTitle+fileName);
		if(!DEFAULT_DIR.exists()){
			if(!DEFAULT_DIR.mkdir())
				JOptionPane.showMessageDialog(this,"不能产生工作目录","不能产生工作目录",JOptionPane.ERROR_MESSAGE);
		}
		setJMenuBar(menuBar);
		
		JMenu fileMenu=new JMenu("文件");
		JMenu zoomMenu=new JMenu("视图");
		JMenu elementMenu=new JMenu("图象");
		JMenu optionMenu=new JMenu("选项");
		JMenu j3dMenu=new JMenu("3D演示1");
		JMenu j3dMenu2=new JMenu("3D演示2");
		JMenu j3dMenu3=new JMenu("3D演示3");
		JMenu j3dMenu4=new JMenu("3D演示4");
		JMenu j3dMenu5=new JMenu("返回画图");
		JMenu chatMenu=new JMenu("网络助手");

		JMenu helpMenu=new JMenu("帮助");
		fileMenu.setMnemonic('F');
		elementMenu.setMnemonic('E');
		helpMenu.setMnemonic('H');
		optionMenu.setMnemonic('O');
		
		newAction=new FileAction("新建",KeyStroke.getKeyStroke('N',Event.CTRL_MASK));
		openAction=new FileAction("打开",KeyStroke.getKeyStroke('O',Event.CTRL_MASK));
		closeAction=new FileAction("关闭");
		saveAction=new FileAction("保存",KeyStroke.getKeyStroke('S',Event.CTRL_MASK));
		saveAsAction=new FileAction("另存为",KeyStroke.getKeyStroke('A',Event.CTRL_MASK));
		printSetupAction=new FileAction("页面设置" );
		printAction=new FileAction("打印",KeyStroke.getKeyStroke('P',Event.CTRL_MASK));

		zoomOutAction=new ZoomOutAction("放大");
		zoomInAction=new ZoomInAction("缩小");
		
		addMenuItem(fileMenu,newAction);
		addMenuItem(fileMenu,openAction);
		addMenuItem(fileMenu,saveAction);
		addMenuItem(fileMenu,saveAsAction);
		
		addMenuItem(zoomMenu,zoomOutAction);
		addMenuItem(zoomMenu,zoomInAction);

		addToolBarButton(newAction);
		addToolBarButton(openAction);
		addToolBarButton(saveAction);
		addToolBarButton(saveAsAction);
		addToolBarButton(printAction);
		toolBar.addSeparator();

		addToolBarButton(zoomOutAction);
		addToolBarButton(zoomInAction);
		toolBar.addSeparator();
		
		saveAction.setEnabled(false);
		saveAsAction.setEnabled(false);
		printAction.setEnabled(false);
		closeAction.setEnabled(false);

		
		
		fileMenu.addSeparator();
		
		addMenuItem(fileMenu,printSetupAction );
		addMenuItem(fileMenu,printAction);
		fileMenu.addSeparator();
		addMenuItem(fileMenu,closeAction);
		addMenuItem(elementMenu,lineAction=new TypeAction("直线",LINE));
		addMenuItem(elementMenu,rectangleAction=new TypeAction("矩形",RECTANGLE));
		addMenuItem(elementMenu,circleAction=new TypeAction("圆",CIRCLE));
		addMenuItem(elementMenu,ellipseAction=new TypeAction("椭圆",ELLIPSE));
		addMenuItem(elementMenu,curveAction=new TypeAction("曲线",CURVE));
		addMenuItem(elementMenu,textAction=new TypeAction("标注",TEXT));
		
		addToolBarButton(lineAction);
		addToolBarButton(rectangleAction);
		addToolBarButton(circleAction);
		addToolBarButton(ellipseAction);
		addToolBarButton(curveAction);
		addToolBarButton(textAction);
		
		
		elementMenu.addSeparator();
		JMenu colorMenu=new JMenu("颜色");

		addMenuItem(colorMenu,redAction=new ColorAction("红",Color.red));
		addMenuItem(colorMenu,yellowAction=new ColorAction("黄",Color.yellow));
		addMenuItem(colorMenu,greenAction=new ColorAction("绿",Color.green));
		addMenuItem(colorMenu,blueAction=new ColorAction("蓝",Color.blue));

		

		popup.add(lineAction).setIcon(null);
		popup.add(rectangleAction).setIcon(null);
		popup.add(circleAction).setIcon(null);
		popup.add(ellipseAction).setIcon(null);
		popup.add(curveAction).setIcon(null);
		popup.add(textAction).setIcon(null);
		popup.addSeparator();
		popup.add(redAction).setIcon(null);;
		popup.add(yellowAction).setIcon(null);
		popup.add(greenAction).setIcon(null);
		popup.add(blueAction).setIcon(null);
		

		customColorItem=popup.add("更多颜色");
		customColorItem.addActionListener(this);

		j3dSphereMotionIem=j3dMenu.add("运动的球");
		j3dText3DItem=j3dMenu2.add("3D文本1");
		j3dPickTextItem=j3dMenu3.add("3D文本2");
		
		j3dConicWorldItem=j3dMenu4.add("混乱的世界");
		j3dBackToj2dItem=j3dMenu5.add("返回画图");

		j3dSphereMotionIem.addActionListener(this);
		j3dText3DItem.addActionListener(this);
		j3dPickTextItem.addActionListener(this);
		
		j3dConicWorldItem.addActionListener(this);
		j3dBackToj2dItem.addActionListener(this);
		
		chatItem=new JCheckBoxMenuItem("显示网络助手",true);
		chatItem.addActionListener(this);
		chatMenu.add(chatItem);
		
		elementMenu.add(colorMenu);
		aboutItem=new JMenuItem("关于");
		aboutItem.addActionListener(this);
		helpMenu.add(aboutItem);

		fontItem=new JMenuItem("字体");
		fontItem.addActionListener(this);
		optionMenu.add(fontItem);
		optionMenu.add(customColorItem );

		
		menuBar.add(fileMenu);
		menuBar.add(zoomMenu);
		menuBar.add(elementMenu);
		menuBar.add(optionMenu);
		menuBar.add(j3dMenu);
		menuBar.add(j3dMenu2);
		menuBar.add(j3dMenu3);
		menuBar.add(j3dMenu4);
		menuBar.add(j3dMenu5);
		menuBar.add(chatMenu);
		menuBar.add(helpMenu);
		
		
		getContentPane().add(statusBar,BorderLayout.SOUTH);
		getContentPane().add(toolBar,BorderLayout.NORTH);
	}


	private JMenuItem addMenuItem(JMenu menu,Action action){
		JMenuItem item=menu.add(action);
		
		KeyStroke keystroke=(KeyStroke)action.getValue(action.ACCELERATOR_KEY);
		if(keystroke!=null){
			item.setAccelerator(keystroke);
		}
		item.setIcon(null);
		return item;
	}


	private JButton addToolBarButton(Action action){
		JButton button=toolBar.add(action);
		button.setBorder(new BevelBorder(BevelBorder.RAISED));
		button.setText(null);
		
	
		return button;
	}

	
	
	class FileAction extends AbstractAction{
		public FileAction(String name){
			super(name);
			String iconName="image/"+name+".jpg";
			if(new File(iconName).exists())
				putValue(SMALL_ICON,new ImageIcon(iconName));
		}
		
		
		public FileAction(String name,KeyStroke keyStroke){
			this(name);
			if(keyStroke!=null){
				putValue(ACCELERATOR_KEY,keyStroke);
			}
		}

		public void actionPerformed(ActionEvent e){

			String name=(String)getValue(NAME);
			if(name.equals(saveAction.getValue(NAME))){
				save();
			}
			else if(name.equals(saveAsAction.getValue(NAME))){
				saveAs() ;
			}
			else if(name.equals(openAction.getValue(NAME))){
				open();
			}
			else if(name.equals(newAction.getValue(NAME))){
				newFile();
			}
			else if(name.equals(closeAction.getValue(NAME))){

			}
			else if(name.equals(printAction.getValue(NAME))){
				onPrint();
			}
			else if(name.equals(printSetupAction.getValue(NAME))){
				onPrintSetup();
			}



	
		

		}
	}


	class TypeAction extends AbstractAction{
		private int type;
		public TypeAction(String name,int type){
			super(name);
			this.type=type;
			String iconName="image/"+name+".jpg";
			if(new File(iconName).exists())
				putValue(SMALL_ICON,new ImageIcon(iconName));
		}
		
		
		
		

		public void actionPerformed(ActionEvent e){
			elementType=type;
			statusBar.setTypePane(type);

		}
	}
		

	class ZoomOutAction extends AbstractAction{
		
		public ZoomOutAction(String name){
			super(name);
			
			String iconName="image/"+name+".jpg";
			if(new File(iconName).exists())
				putValue(SMALL_ICON,new ImageIcon(iconName));
		}
		
		
		
		

		public void actionPerformed(ActionEvent e){
			scale=scale*(1+0.2);
			app.getView().setScale(scale);
			
		}
	}


	class ZoomInAction extends AbstractAction{
		
		public ZoomInAction(String name){
			super(name);
			
			String iconName="image/"+name+".jpg";
			if(new File(iconName).exists())
				putValue(SMALL_ICON,new ImageIcon(iconName));
		}
		
		
		
		

		public void actionPerformed(ActionEvent e){
			scale=scale*(1-0.2);
			app.getView().setScale(scale);
			
		}
	}




	class ColorAction extends AbstractAction{
		private Color color;
		public ColorAction(String name,Color color){
			super(name);
			this.color=color;
		}
		
		
		
		

		public void actionPerformed(ActionEvent e){
			elementColor=color;

⌨️ 快捷键说明

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