📄 statusline.java
字号:
package JFCBook.Chapter6.jdk13;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class StatusLine extends JLabel implements PropertyChangeListener {
private String defaultMessage = "Ready";
public StatusLine(ButtonSnooper snooper) {
setText(defaultMessage);
snooper.addPropertyChangeListener(this);
}
public void setDefaultMessage(String defaultMessage) {
this.defaultMessage = defaultMessage;
}
public void setMessage(String message) {
setText(message != null ? message : defaultMessage);
Dimension d = getSize();
paintImmediately(new Rectangle(0, 0, d.width, d.height));
}
public void propertyChange(PropertyChangeEvent evt) {
String name = evt.getPropertyName();
if (name.equals(ButtonSnooper.ARMED_BUTTON) ||
name.equals(ButtonSnooper.PRESSED_BUTTON)) {
String text = null;
AbstractButton button = (AbstractButton)evt.getNewValue();
Action sourceAction;
if (button != null &&
(sourceAction = button.getAction()) != null) {
String property;
if (name.equals(ButtonSnooper.ARMED_BUTTON)) {
property = Action.SHORT_DESCRIPTION;
} else {
property = Action.LONG_DESCRIPTION;
}
Object value = sourceAction.getValue(property);
if (value instanceof String) {
text = (String)value;
}
}
// "text" is now null if there is no active or pressed
// button or the button has no associated action or there
// is an action but it does not have a string stored under
// the SHORT_DESCRIPTION or LONG_DESCRIPTION property. In
// any of those cases, the default message will be displayed.
setMessage(text);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -