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

📄 sketchframe.java

📁 用Java实现的网络画图程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			statusBar.setColorPane(color);
			

		}
	}	
				

	
	public Color getElementColor(){
		return elementColor;
	}
	
	
	private File showDialog(String dialogTitle,String buttonText,String tooltip,char mne,File file){
		files.setDialogTitle(dialogTitle);
		files.setApproveButtonText(buttonText);
		files.setApproveButtonToolTipText(tooltip);
		files.setApproveButtonMnemonic(mne);
		files.setFileSelectionMode(files.FILES_ONLY);
		files.rescanCurrentDirectory();
		files.setSelectedFile(file);
		ExtensionFilter fileExt=new ExtensionFilter(".skt","SKet file (*.skt)");
		files.addChoosableFileFilter(fileExt);
		files.setFileFilter(fileExt);
		int result=files.showDialog(SketchFrame.this,null);
		return (result==files.APPROVE_OPTION)?files.getSelectedFile():null;
	}





	private void newFile() {
		checkForSave();
		app.insertModel(new SketchModel());
		modelFile=null;
		fileName=DEFAULT_FILENAME;
		setTitle(windowTitle+files.getCurrentDirectory()+"\\"+fileName);
		fileChanged=false;
	}
	private void saveAs() {
		File file=showDialog("保存文件","保存","保存文件",'S',modelFile==null?new File(files.getCurrentDirectory(),fileName):modelFile);
		if(file!=null){
				if(file.exists()&&!file.equals(modelFile))
					if(JOptionPane.NO_OPTION==JOptionPane.showConfirmDialog(SketchFrame.this,file.getName()+" 已经存在 是否覆盖?","确定",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE))
						return;
		saveSketch(file);
		}
		return;
	}
	
	private void save(){
		if(!fileChanged)
			return;
		if(modelFile!=null)
			saveSketch(modelFile);
		else{
			File file=showDialog("保存文件","保存","保存文件",'S',new File(files.getCurrentDirectory(),fileName));
		

			if(file==null)
				return;
			else
				if(file.exists())
					if(JOptionPane.NO_OPTION==JOptionPane.showConfirmDialog(SketchFrame.this,file.getName()+" 已经存在 是否覆盖?","确定",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE))
						return;
		saveSketch(file);
		}
	}
		

	private void saveSketch(File outFile){
		try{
			ObjectOutputStream out=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(outFile)));
			out.writeObject(app.getModel());
			out.close();
		}catch(IOException e){
			System.err.println(e);
			JOptionPane.showMessageDialog(SketchFrame.this,"不能写入文件","不能写入文件",JOptionPane.ERROR_MESSAGE);
			return;

		}
		if(outFile!=modelFile){
			modelFile=outFile;
			fileName=modelFile.getName();
			setTitle(windowTitle+modelFile.getPath());
		}
		fileChanged=false;
	}
	

	public void checkForSave(){
		if(fileChanged)
				if(JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(SketchFrame.this,"文件已经改变,要保持吗?","确定",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE))
			
					save();
	}

	public void open(){
		File file=showDialog("打开文件","打开","打开文件",'O',null );
		if(file!=null)
			open(file);
	}

	public void open(File file){
		try{
			ObjectInputStream in =new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
			app.insertModel((SketchModel)in.readObject());
			in.close();
			modelFile=file;
			fileName=modelFile.getName();
			setTitle(windowTitle+modelFile.getPath());
			fileChanged=false;
		}catch(ClassNotFoundException ee){}
		catch(IOException e){
			System.err.println(e);
			JOptionPane.showMessageDialog(this,"打开文件错误","错误",JOptionPane.INFORMATION_MESSAGE);
		}
	}
			
	
	protected void onPrint(){

		Thread t=new Thread(new Runnable(){
			public void run(){
				PrinterJob printJob=PrinterJob.getPrinterJob();
				//Paper paper=new Paper();
				//paper.setImageableArea(72,144,72*6.5,72*7);
				//PageFormat format=new PageFormat();
				//format.setPaper(paper);
				//format.setOrientation(PageFormat.LANDSCAPE);
				
				printJob.setPrintable(app.getView(),pageFormat);
				if(printJob.printDialog()){

					try{
						printJob.print();
					}catch(PrinterException pe){
						JOptionPane.showMessageDialog(SketchFrame.this,"打印出错","打印出错",JOptionPane.ERROR_MESSAGE);
					
					}
				}
			}
		});
		t.start();
	}


	protected void onPrintSetup(){
		Thread t=new Thread(new Runnable(){
			public void run(){
				PrinterJob pj=PrinterJob.getPrinterJob();
				pageFormat=pj.pageDialog(pageFormat);
			}
		});
		t.start();
	}


	public int  getElementType(){
		return elementType;
	}

	public void setFont(Font font){
		this.font=font;
	}


	public Font getFont(){
		return font;
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==aboutItem){
			JOptionPane.showMessageDialog(this,"Java 画图 版权所有 梁志伟 2001-2002","关于画图",JOptionPane.INFORMATION_MESSAGE);
		}
		else if(e.getSource()==fontItem){
			FontDialog fontDlg=new FontDialog(this);
			Dimension bounds=getSize();
			fontDlg.setLocation(bounds.width/3,bounds.height/4);
			fontDlg.setVisible(true);
			
		}
		else if(e.getSource()==customColorItem){
			Color color=JColorChooser.showDialog(this,"选择颜色",elementColor);
			if(color!=null){
				elementColor=color;
				statusBar.setColorPane(elementColor);
			}
		}
		else if(e.getSource()==j3dSphereMotionIem){
			
			
			getContentPane().add( new SphereMotion(), BorderLayout.CENTER);
			Toolkit toolkit=getToolkit();
			Dimension screenSize=toolkit.getScreenSize();
			setSize(screenSize );
			validate() ;
		}
		else if(e.getSource()==j3dText3DItem){
			
			
			getContentPane().add( new  Text3DLoad() , BorderLayout.CENTER);
			Toolkit toolkit=getToolkit();
			Dimension screenSize=toolkit.getScreenSize();
			setSize(screenSize );
			validate() ;
				
		}
		else if(e.getSource()==j3dPickTextItem){
			
			
			getContentPane().add( new PickText3DBounds(), BorderLayout.CENTER);
			Toolkit toolkit=getToolkit();
			Dimension screenSize=toolkit.getScreenSize();
			setSize(screenSize );
			validate() ;
				
		}
		else if(e.getSource()==j3dConicWorldItem){
			
			
			getContentPane().add( new ConicWorld(), BorderLayout.CENTER);
			Toolkit toolkit=getToolkit();
			Dimension screenSize=toolkit.getScreenSize();
			setSize(screenSize );
			validate() ;
		}
		else if(e.getSource()==j3dBackToj2dItem){
			
			Component coms[]=getContentPane().getComponents() ;
			System.out.println(coms.length);
			for(int i=0;i<coms.length;i++){
				if(coms[i] instanceof ConicWorld||coms[i] instanceof PickText3DBounds||coms[i] instanceof Text3DLoad||coms[i] instanceof SphereMotion){
					getContentPane().remove(coms[i]);
					
				}
			}
			getContentPane() .add( app.getView() , BorderLayout.CENTER);
			Toolkit toolkit=getToolkit();
			Dimension screenSize=toolkit.getScreenSize();
			setSize(screenSize );
			validate() ;
				
		}
		else if(e.getSource()==chatItem){
			app.getDlg().setVisible(chatItem.isSelected());
			
			
		}

		






		
	}

	public JPopupMenu  getPopup(){
		return popup;
	}
	
	public StatusBar getStatusBar(){
		return statusBar;
	}



	public void resetScale(double scale){
		this.scale=scale;
	}


       public void update(Observable o,Object rectangle){
		fileChanged=true;
		saveAction.setEnabled(fileChanged);
		saveAsAction.setEnabled(fileChanged);
		printAction.setEnabled(fileChanged);
	}

	public static void main(String args[]){
	  	try {
	          	UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	      	} catch (Exception exc) {
	          System.err.println("Error loading L&F: " + exc);
	      	}
		SketchFrame sketchFrame=new SketchFrame("画图",null);
		Toolkit toolkit=sketchFrame.getToolkit();
		Dimension screenSize=toolkit.getScreenSize();
		sketchFrame.setBounds(screenSize.width/4,screenSize.height/4,screenSize.width/2,screenSize.height/2);
		sketchFrame.setVisible(true);

	}

	private JMenuBar menuBar=new JMenuBar();
	private JToolBar toolBar=new JToolBar();
	private StatusBar statusBar=new StatusBar();
	private Color elementColor=DEFAULT_ELEMENT_COLOR;
	private int elementType=DEFAULT_ELEMENT_TYPE;
	private FileAction newAction,openAction,closeAction,saveAsAction,saveAction,printAction,printSetupAction;
	private TypeAction lineAction,rectangleAction,circleAction,curveAction,ellipseAction,textAction;
	private ZoomOutAction zoomOutAction;
	private ZoomInAction zoomInAction;
	private ColorAction redAction,yellowAction,greenAction,blueAction;
	private JMenuItem aboutItem,fontItem,customColorItem,j3dSphereMotionIem,j3dText3DItem,j3dPickTextItem,j3dConicWorldItem,j3dBackToj2dItem;
	private JCheckBoxMenuItem chatItem;
	private Font font=DEFAULT_FONT;
	private Sketcher app;
	private JPopupMenu popup =new JPopupMenu("popup");
	private String windowTitle;
	private String fileName=DEFAULT_FILENAME;
	private File modelFile;
	private boolean fileChanged=false;
	JFileChooser files=new JFileChooser(DEFAULT_DIR);
	PageFormat pageFormat=new PageFormat();
	private double scale=1;
	
}

	
		

⌨️ 快捷键说明

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