📄 sketchframe.java
字号:
}
statusBar.setColorPane(elementColor);
}
// The arrays below could be put in the Constants interface definition
private final String[] choices = {"Red", "Yellow", "Green", "Blue", "Custom..." };
private final Color[] colors = {Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE};
}
// We will add inner classes defining action objects here...
class FileAction extends AbstractAction {
// Constructor
FileAction(String name) {
super(name);
String iconFileName = "Images/" + name + ".gif";
if(new File(iconFileName).exists())
putValue(SMALL_ICON, new ImageIcon(iconFileName));
}
// Constructor
FileAction(String name, KeyStroke keystroke) {
this(name);
if(keystroke != null)
putValue(ACCELERATOR_KEY, keystroke);
}
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
}
FileAction(String name, KeyStroke keystroke, String tooltip) {
this(name, keystroke); // Call the other constructor
if(tooltip != null) // If there is tooltip text
putValue(SHORT_DESCRIPTION, tooltip); // ...squirrel it away
}
// Event handler
public void actionPerformed(ActionEvent e) {
// We will add action code here eventually...
}
}
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;
}
private JMenuItem addMenuItem(JMenu menu, Action action) {
JMenuItem item = menu.add(action); // Add the menu item
KeyStroke keystroke = (KeyStroke)action.getValue(action.ACCELERATOR_KEY);
if(keystroke != null)
item.setAccelerator(keystroke);
// remove this comments to disable icons
// item.setIcon(null); // Remove the icon
return item; // Return the menu item
}
public Color getElementColor() {
return elementColor;
}
public void setElementColor(Color color) {
elementColor = color;
statusBar.setColorPane(color);
}
public int getElementType() {
return elementType;
}
// Handle About menu action events
public void actionPerformed(ActionEvent e) {
if(e.getSource() == aboutItem) {
// Create about dialog with the menu item as parent
JOptionPane.showMessageDialog(this, // Parent
"Sketcher Copyright Ivor Horton 2001", // 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 Font getCurrentFont() {
return font;
}
public void setCurrentFont(Font font) {
this.font = font;
}
private JPopupMenu popup = new JPopupMenu("General"); // Window pop-up
// Element color actions
private ColorAction redAction, yellowAction, greenAction, blueAction;
// Element type actions
private TypeAction lineAction, rectangleAction, circleAction, curveAction, textAction;
// File actions
private FileAction newAction, openAction, closeAction, saveAction, saveAsAction, printAction;
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 JToolBar toolBar = new JToolBar(); // Window toolbar
private Sketcher theApp;
private StatusBar statusBar = new StatusBar(); // Window status bar
// Sundry menu items
private JMenuItem aboutItem, fontItem;
private Font font = DEFAULT_FONT; // Current font
private FontDialog fontDlg; // The font dialog
// Class defining a general purpose message box
class AboutDialog extends JDialog implements ActionListener {
public AboutDialog(Frame parent, String title, String message) {
super(parent, title, true);
// If there was a parent, set dialog position inside
if(parent != null) {
Dimension parentSize = parent.getSize(); // Parent size
Point p = parent.getLocation(); // Parent position
setLocation(p.x+parentSize.width/4,p.y+parentSize.height/4);
}
// Create the message pane
JPanel messagePane = new JPanel();
messagePane.add(new JLabel(message));
getContentPane().add(messagePane);
// Create the button pane
JPanel buttonPane = new JPanel();
JButton button = new JButton("OK"); // Create OK button
buttonPane.add(button); // add to content pane
button.addActionListener(this);
getContentPane().add(buttonPane, BorderLayout.SOUTH);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack(); // Size window for components
setVisible(true);
}
// OK button action
public void actionPerformed(ActionEvent e) {
setVisible(false); // Set dialog invisible
dispose(); // Release the dialog resources
}
}
private JMenuItem customColorItem;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -