📄 sketchframe.java
字号:
// Frame for the Sketcher application
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SketchFrame extends JFrame
implements Constants
{
// Constructor
public SketchFrame(String title)
{
super(title); // Call the base constructor
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setJMenuBar(menuBar); // Add the menu bar to the window
JMenu fileMenu = new JMenu("File"); // Create File menu
JMenu elementMenu = new JMenu("Elements"); // Create Elements menu
fileMenu.setMnemonic('F'); // Create shortcut
elementMenu.setMnemonic('E'); // Create shortcut
// Construct the file pull down menu
newItem = fileMenu.add("New"); // Add New item
openItem = fileMenu.add("Open"); // Add Open item
closeItem = fileMenu.add("Close"); // Add Close item
fileMenu.addSeparator(); // Add separator
saveItem = fileMenu.add("Save"); // Add Save item
saveAsItem = fileMenu.add("Save As..."); // Add Save As item
fileMenu.addSeparator(); // Add separator
printItem = fileMenu.add("Print"); // Add Print item
// Add File menu accelerators
newItem.setAccelerator(KeyStroke.getKeyStroke('N',Event.CTRL_MASK ));
openItem.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MASK ));
saveItem.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK ));
printItem.setAccelerator(KeyStroke.getKeyStroke('P',Event.CTRL_MASK ));
// Construct the Element pull down menu
elementMenu.add(lineItem = new JRadioButtonMenuItem(
"Line", elementType==LINE));
elementMenu.add(rectangleItem = new JRadioButtonMenuItem(
"Rectangle", elementType==RECTANGLE));
elementMenu.add(circleItem = new JRadioButtonMenuItem(
"Circle", elementType==CIRCLE));
elementMenu.add(curveItem = new JRadioButtonMenuItem(
"Curve", elementType==CURVE));
// elementMenu.add(lineItem = new JRadioButtonMenuItem("Line", true));
// elementMenu.add(rectangleItem = new JRadioButtonMenuItem("Rectangle", false));
// elementMenu.add(circleItem = new JRadioButtonMenuItem("Circle", false));
// elementMenu.add(curveItem = new JRadioButtonMenuItem("Curve", false));
ButtonGroup types = new ButtonGroup();
types.add(lineItem);
types.add(rectangleItem);
types.add(circleItem);
types.add(curveItem);
// Add element type accelerators
lineItem.setAccelerator(KeyStroke.getKeyStroke('L',Event.CTRL_MASK ));
rectangleItem.setAccelerator(KeyStroke.getKeyStroke('E',Event.CTRL_MASK ));
circleItem.setAccelerator(KeyStroke.getKeyStroke('I',Event.CTRL_MASK ));
curveItem.setAccelerator(KeyStroke.getKeyStroke('V',Event.CTRL_MASK ));
elementMenu.addSeparator();
JMenu colorMenu = new JMenu("Color"); // Color sub-menu
elementMenu.add(colorMenu); // Add the sub-menu
colorMenu.add(redItem = new JCheckBoxMenuItem(
"Red", elementColor.equals(Color.red)));
colorMenu.add(yellowItem = new JCheckBoxMenuItem(
"Yellow", elementColor.equals(Color.yellow)));
colorMenu.add(greenItem = new JCheckBoxMenuItem(
"Green", elementColor.equals(Color.green)));
colorMenu.add(blueItem = new JCheckBoxMenuItem(
"Blue", elementColor.equals(Color.blue)));
// JMenu colorMenu = new JMenu("Color"); // Color sub-menu
// elementMenu.add(colorMenu); // Add the sub-menu
// colorMenu.add(redItem = new JCheckBoxMenuItem("Red", false));
// colorMenu.add(yellowItem = new JCheckBoxMenuItem("Yellow", false));
// colorMenu.add(greenItem = new JCheckBoxMenuItem("Green", false));
// colorMenu.add(blueItem = new JCheckBoxMenuItem("Blue", true));
// Add element color accelerators
redItem.setAccelerator(KeyStroke.getKeyStroke('R',Event.CTRL_MASK ));
yellowItem.setAccelerator(KeyStroke.getKeyStroke('Y',Event.CTRL_MASK ));
greenItem.setAccelerator(KeyStroke.getKeyStroke('G',Event.CTRL_MASK ));
blueItem.setAccelerator(KeyStroke.getKeyStroke('B',Event.CTRL_MASK ));
// Handles element type menu items
class TypeListener implements ActionListener
{
// Constructor
TypeListener(int type)
{
this.type = type;
}
// Sets the element type
public void actionPerformed(ActionEvent e)
{
elementType = type;
}
private int type; // Store the type for the menu
}
// Add type menu item listeners
lineItem.addActionListener(new TypeListener(LINE));
rectangleItem.addActionListener(new TypeListener(RECTANGLE));
circleItem.addActionListener(new TypeListener(CIRCLE));
curveItem.addActionListener(new TypeListener(CURVE));
menuBar.add(fileMenu); // Add the file menu
menuBar.add(elementMenu); // Add the element menu
//enableEvents(AWTEvent.WINDOW_EVENT_MASK); // Enable window events
}
// Handle window events
//protected void processWindowEvent(WindowEvent e)
//{
// if (e.getID() == WindowEvent.WINDOW_CLOSING)
// {
// dispose(); // Release resources
// System.exit(0); // Exit the program
// }
// super.processWindowEvent(e); // Pass on the event
//}
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
// File menu items
private JMenuItem newItem, openItem, closeItem,
saveItem, saveAsItem, printItem;
// Element menu items
private JRadioButtonMenuItem lineItem, rectangleItem, circleItem, // Types
curveItem, textItem;
private JCheckBoxMenuItem redItem, yellowItem, // Colors
greenItem, blueItem ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -