?? sketchframe.java
字號:
{
return elementType;
}
public Font getCurrentFont()
{
return font;
}
// Retrieve the pop-up menu
public JPopupMenu getPopup()
{
return popup;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == aboutItem)
{
// Create about dialog with the menu item as parent
JOptionPane.showMessageDialog((Component)e.getSource(), // Parent
"Sketcher Copyright Ivor Horton 1999", // Message
"About Sketcher", // Title
JOptionPane.INFORMATION_MESSAGE); // Message type
}
else if(e.getSource() == fontItem)
{ // Set the dialog window position
Rectangle bounds = getBounds();
fontDlg.setLocation(bounds.x + bounds.width/3, bounds.y + bounds.height/3);
fontDlg.setVisible(true); // Show the dialog
}
else if(e.getSource() == customColorItem)
{
Color color = JColorChooser.showDialog(this, "Select Custom Color",
elementColor);
if(color != null)
{
elementColor = color;
statusBar.setColorPane(color);
}
}
}
public void setCurrentFont(Font font)
{
this.font = font;
}
// Prompt for save operation when necessary
public void checkForSave()
{
if(sketchChanged)
if(JOptionPane.YES_OPTION ==
JOptionPane.showConfirmDialog(SketchFrame.this,
"Current file has changed. Save current file?",
"Confirm Save Current File",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE))
saveOperation();
}
// Method for opening file
public void openSketch(File inFile)
{
try
{
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(
new FileInputStream(inFile)));
theApp.insertModel((SketchModel)in.readObject());
in.close();
modelFile = inFile;
filename = modelFile.getName(); // Update the file name
setTitle(frameTitle+modelFile.getPath()); // Change the window title
sketchChanged = false; // Status is unchanged
}
catch(Exception e)
{
System.out.println(e);
JOptionPane.showMessageDialog(SketchFrame.this,
"Error reading a sketch file.",
"File Input Error",
JOptionPane.ERROR_MESSAGE);
}
}
// File actions
private FileAction newAction, openAction, closeAction,
saveAction, saveAsAction, printAction;
// Element type actions
private TypeAction lineAction, rectangleAction, circleAction,
curveAction, textAction;
// Element color actions
private ColorAction redAction, yellowAction,
greenAction, blueAction;
private JMenuBar menuBar = new JMenuBar(); // Window menu bar
private Color elementColor = DEFAULT_ELEMENT_COLOR; // Current element color
private int elementType = DEFAULT_ELEMENT_TYPE; // Current element type
private Font font = DEFAULT_FONT; // Current font
private JToolBar toolBar = new JToolBar(); // Window toolbar
StatusBar statusBar = new StatusBar(); // Window status bar
private JPopupMenu popup = new JPopupMenu("General"); // Window pop-up
// Sundry menu items
private JMenuItem aboutItem, fontItem;
private FontDialog fontDlg; // The font dialog
private JMenuItem customColorItem;
private String frameTitle; // Frame title
private String filename = DEFAULT_FILENAME; // Current model file name
private File modelFile; // File for the current sketch
private boolean sketchChanged = false; // Model changed flag
private JFileChooser files; // File dialogs
Sketcher theApp;
// We will add inner classes defining action objects here...
class FileAction extends AbstractAction
{
FileAction(String name)
{
super(name);
String iconFileName = "Images/" + name + ".gif";
if(new File(iconFileName).exists())
putValue(SMALL_ICON, new ImageIcon(iconFileName));
}
FileAction(String name, String tooltip)
{
this(name); // Call the other constructor
if(tooltip != null) // If there is tooltip text
putValue(SHORT_DESCRIPTION, tooltip); // ...squirrel it away
}
public void actionPerformed(ActionEvent e)
{
String name = (String)getValue(NAME);
if(name.equals(saveAction.getValue(NAME)))
{
saveOperation();
}
else if(name.equals(saveAsAction.getValue(NAME)))
{
File file = showDialog("Save Sketch As",
"Save",
"Save the sketch",
's',
modelFile == null ? new File(
files.getCurrentDirectory(), filename):modelFile);
if(file != null)
{
if(file.exists() && !file.equals(modelFile))
if(JOptionPane.NO_OPTION == // Overwrite warning
JOptionPane.showConfirmDialog(SketchFrame.this,
file.getName()+" exists. Overwrite?",
"Confirm Save As",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE))
return; // No file selected
saveSketch(file);
}
return;
}
else if(name.equals(openAction.getValue(NAME)))
{
checkForSave();
File file = showDialog("Open Sketch File", // Dialog window title
"Open", // button lable
"Read a sketch from file", // Button tooltip text
'o', // Shortcut character
null); // No file selected
if(file != null) // If a file was selected
openSketch(file); // then read it
}
else if(name.equals(newAction.getValue(NAME)))
{
checkForSave();
theApp.insertModel(new SketchModel()); // Insert new empty sketch
modelFile = null; // No file for it
filename = DEFAULT_FILENAME; // Default name
setTitle(frameTitle + files.getCurrentDirectory() + "\\" + filename);
sketchChanged = false; // Not changed yet
}
else if(name.equals(closeAction.getValue(NAME)))
{
checkForSave();
System.exit(0);
}
else if(name.equals(printAction.getValue(NAME)))
{
PrinterJob printJob = PrinterJob.getPrinterJob(); // Get a printing object
printJob.setPrintable(theApp.getView()); // The view is the page source
if(printJob.printDialog()) // Display print dialog
{ // If true is returned...
try
{
printJob.print(); // then print
}
catch(PrinterException pe)
{
System.out.println(pe);
JOptionPane.showMessageDialog(SketchFrame.this,
"Error printing a sketch.",
"Printer Error",
JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
class TypeAction extends AbstractAction
{
TypeAction(String name, int typeID)
{
super(name);
this.typeID = typeID;
String iconFileName = "Images/" + name + ".gif";
if(new File(iconFileName).exists())
putValue(SMALL_ICON, new ImageIcon(iconFileName));
}
TypeAction(String name, int typeID, String tooltip)
{
this(name, typeID);
if(tooltip != null) // If there is a tooltip
putValue(SHORT_DESCRIPTION, tooltip); // ...squirrel it away
}
public void actionPerformed(ActionEvent e)
{
elementType = typeID;
statusBar.setTypePane(typeID);
}
private int typeID;
}
// Handles color menu items
class ColorAction extends AbstractAction
{
public ColorAction(String name, Color color)
{
super(name);
this.color = color;
String iconFileName = "Images/" + name + ".gif";
if(new File(iconFileName).exists())
putValue(SMALL_ICON, new ImageIcon(iconFileName));
}
public ColorAction(String name, Color color, String tooltip)
{
this(name, color);
if(tooltip != null) // If there is a tooltip
putValue(SHORT_DESCRIPTION, tooltip); // ...squirrel it away
}
public void actionPerformed(ActionEvent e)
{
elementColor = color;
statusBar.setColorPane(color);
}
private Color color;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -