📄 window.java
字号:
if (windowListener != null) {
switch(e.getID()) {
case WindowEvent.WINDOW_OPENED:
windowListener.windowOpened(e);
break;
case WindowEvent.WINDOW_CLOSING:
windowListener.windowClosing(e);
break;
case WindowEvent.WINDOW_CLOSED:
windowListener.windowClosed(e);
break;
case WindowEvent.WINDOW_ICONIFIED:
windowListener.windowIconified(e);
break;
case WindowEvent.WINDOW_DEICONIFIED:
windowListener.windowDeiconified(e);
break;
case WindowEvent.WINDOW_ACTIVATED:
windowListener.windowActivated(e);
break;
case WindowEvent.WINDOW_DEACTIVATED:
windowListener.windowDeactivated(e);
break;
default:
break;
}
}
}
/* Handle TAB and Shift-TAB events. */
private boolean handleTabEvent(KeyEvent e) {
if (e.getKeyCode() != '\t' || (e.getSource() instanceof TextArea)) {
return false;
}
if ((e.getModifiers() & ~InputEvent.SHIFT_MASK) > 0) {
return false;
}
int id = e.getID();
if (id == KeyEvent.KEY_RELEASED || id == KeyEvent.KEY_TYPED) {
return true;
}
if (e.isShiftDown()) {
return focusMgr.focusPrevious();
} else {
return focusMgr.focusNext();
}
}
void preProcessKeyEvent(KeyEvent e) {
// Dump the list of child windows to System.out.
if (e.isActionKey() && e.getKeyCode() == KeyEvent.VK_F1 &&
e.isControlDown() && e.isShiftDown()) {
list(System.out, 0);
}
}
void postProcessKeyEvent(KeyEvent e) {
if (handleTabEvent(e)) {
e.consume();
return;
}
}
void setFocusOwner(Component c) {
focusMgr.setFocusOwner(c);
}
void transferFocus(Component base) {
nextFocus(base);
}
boolean isActive() {
return active;
}
/**
* Returns the child component of this Window which has focus if and
* only if this Window is active.
* @return the component with focus, or null if no children have focus
* assigned to them.
*/
public Component getFocusOwner() {
if (active)
return focusMgr.getFocusOwner();
else
return null;
}
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>transferFocus(Component)</code>.
*/
void nextFocus(Component base) {
focusMgr.focusNext(base);
}
/*
* Dispatches an event to this window or one of its sub components.
* @param e the event
*/
void dispatchEventImpl(AWTEvent e) {
switch(e.getID()) {
case FocusEvent.FOCUS_GAINED:
setFocusOwner(this);
break;
case ComponentEvent.COMPONENT_RESIZED:
invalidate();
validate();
repaint();
break;
case WindowEvent.WINDOW_ACTIVATED:
active = true;
/*
Calling this messes up focus on Solaris
focusMgr.activateFocus();
*/
break;
case WindowEvent.WINDOW_DEACTIVATED:
active = false;
break;
default:
break;
}
super.dispatchEventImpl(e);
}
/**
* @deprecated As of JDK version 1.1
* replaced by <code>dispatchEvent(AWTEvent)</code>.
*/
public boolean postEvent(Event e) {
if (handleEvent(e)) {
e.consume();
return true;
}
return false;
}
/**
* Checks if this Window is showing on screen.
* @see java.awt.Component#setVisible(boolean)
*/
public boolean isShowing() {
return visible;
}
/* Serialization support. If there's a MenuBar we restore
* its (transient) parent field here.
*/
private int windowSerializedDataVersion = 1;
private void writeObject(ObjectOutputStream s)
throws IOException
{
s.defaultWriteObject();
AWTEventMulticaster.save(s, windowListenerK, windowListener);
s.writeObject(null);
}
private void readObject(ObjectInputStream s)
throws ClassNotFoundException, IOException
{
s.defaultReadObject();
Object keyOrNull;
while(null != (keyOrNull = s.readObject())) {
String key = ((String)keyOrNull).intern();
if (windowListenerK == key)
addWindowListener((WindowListener)(s.readObject()));
else // skip value for unrecognized key
s.readObject();
}
setWarningString();
}
}
class FocusManager implements java.io.Serializable {
Container focusRoot;
Component focusOwner; //Bug #4101153 : a backout for b fix made for
//bug # 4092347
/*
* JDK 1.1 serialVersionUID
*/
static final long serialVersionUID = 2491878825643557906L;
FocusManager(Container cont) {
focusRoot = cont;
}
/* Re-activate the last component with focus if it is still
* visible and active.
* If no component had focus yet, assign it to first component
* capable of receiving it (visible, active, focusable).
* If no visible, active, focusable components are present,
* assign focus to the focus root.
*/
void activateFocus() {
boolean assigned = false;
if (focusOwner != null) {
if ((assigned = assignFocus(focusOwner, false)) != true) {
assigned = focusNext(focusOwner);
}
} else {
// assign to first component capable of taking it
assigned = focusForward(focusRoot);
}
if (!assigned) {
focusRoot.requestFocus();
}
}
synchronized void setFocusOwner(Component c) {
focusOwner = c;
}
Component getFocusOwner() {
return focusOwner;
}
boolean focusNext() {
return focusNext(focusOwner);
}
boolean focusNext(Component base) {
synchronized (focusRoot.getTreeLock()) { // BUGID4067845
Component target = base;
if (target != null && target.parent != null) {
//System.out.println("FocusManager.focusNext: owner="+focusOwner);
do {
boolean found = false;
Container p = target.parent;
Component c;
for (int i = 0; i < p.ncomponents; i++) {
c = p.component[i];
if (found) {
if (assignFocus(c)) {
return true;
}
if (c instanceof Container &&
c.isVisible() &&
c.isEnabled()) {
if (focusForward((Container)c)) {
return true;
}
}
} else if (c == target) {
found = true;
}
}
target = p;
} while (target != focusRoot && target.parent != null);
}
// wrap-around
if (focusForward(focusRoot)) {
return true;
}
return false;
}
}
boolean focusPrevious() {
return focusPrevious(focusOwner);
}
boolean focusPrevious(Component base) {
synchronized (focusRoot.getTreeLock()) { // BUGID4067845
Component target = base;
if (target != null && target.parent != null) {
do {
boolean found = false;
Container p = target.parent;
Component c;
for (int i = p.ncomponents-1; i >= 0; i--) {
c = p.component[i];
if (found) {
if (assignFocus(c)) {
return true;
}
if (c instanceof Container &&
c.isVisible() &&
c.isEnabled()) {
if (focusBackward((Container)c)) {
return true;
}
}
} else if (c == target) {
found = true;
}
}
target = p;
} while (target != focusRoot);
}
// wrap-around
if (focusBackward(focusRoot)) {
return true;
}
return false;
}
}
boolean assignFocus(Component c) {
return assignFocus(c, true);
}
synchronized boolean assignFocus(Component c, boolean requireTraversable) {
if (c.isVisible() && c.isEnabled() &&
(!requireTraversable || c.isFocusTraversable())) {
//System.out.println("FocusManager.assignFocus: "+c);
c.requestFocus();
return true;
}
return false;
}
synchronized boolean focusForward(Container cont) {
for (int i = 0; i < cont.ncomponents; i++) {
Component c = cont.component[i];
if (assignFocus(c)) {
return true;
}
if (c instanceof Container && c.isVisible() && c.isEnabled()) {
if (focusForward((Container)c)) {
return true;
}
}
}
return false;
}
synchronized boolean focusBackward(Container cont) {
for (int i = cont.ncomponents-1; i >= 0; i--) {
Component c = cont.component[i];
if (assignFocus(c)) {
return true;
}
if (c instanceof Container && c.isVisible() && c.isEnabled()) {
if (focusBackward((Container)c)) {
return true;
}
}
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -