📄 sketchframe.java
字号:
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 + -