📄 select.java
字号:
package org.merlin.step.nov;import java.awt.*;import java.awt.event.*;import java.util.*;public class Select extends Component implements Tool, UpdateListener { public Select () { enableEvents (AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK); } ObservableList elements; public void setDisplayList (ObservableList l) { elements = l; elements.addUpdateListener (this); } public Component getDisplay () { return this; } public Component getControls () { LWContainer controls = new LWContainer (); controls.setLayout (new BorderLayout ()); controls.add ("North", new Label ("Select Tool", Label.CENTER)); return controls; } public void dispose () { elements.removeUpdateListener (this); } public void updateOccurred (UpdateEvent e) { if (selected != null) { selected = null; repaint (); } } Element selected; int x0, y0, x1, y1; protected void processEvent (AWTEvent e) { super.processEvent (e); if (e instanceof MouseEvent) { MouseEvent m = (MouseEvent) e; switch (m.getID ()) { case MouseEvent.MOUSE_PRESSED: Element oSelected = selected; x0 = x1 = m.getX (); y0 = y1 = m.getY (); selected = null; Enumeration els = elements.elements (); while (els.hasMoreElements ()) { Element el = (Element) els.nextElement (); if ((el != null) && el.getBounds ().contains (x0, y0)) selected = el; } if (selected != oSelected) repaint (); break; case MouseEvent.MOUSE_DRAGGED: if (selected != null) { x1 = m.getX (); y1 = m.getY (); repaint (); } break; case MouseEvent.MOUSE_RELEASED: if (selected != null) { x1 = m.getX (); y1 = m.getY (); elements.replaceElementAtEnd (selected, selected.getTranslated (x1 - x0, y1 - y0)); selected = null; repaint (); } break; } } } public void paint (Graphics g) { if (selected != null) { Rectangle r = selected.getBounds (); g.setColor (Color.red); g.drawRect (r.x - 1 + x1 - x0, r.y - 1 + y1 - y0, r.width + 1, r.height + 1); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -