插件开发工具库,推荐依赖该工具库。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB

package com.fanruan.api.design.ui.editor;
import com.fanruan.api.design.ui.component.UINumberField;
import com.fanruan.api.util.StringKit;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/**
* @author richie
* @version 10.0
* Created by richie on 2019/11/1
* 用于编辑和展示数值的编辑器,该类是一个抽象类
*/
public abstract class BaseNumberEditor<T extends Number> extends BaseEditor<T> {
private static final long serialVersionUID = 1L;
protected UINumberField numberField;
protected String oldValue = StringKit.EMPTY;
public BaseNumberEditor() {
this(null, StringKit.EMPTY);
}
public BaseNumberEditor(T value, String name) {
this.setLayout(new BorderLayout());
numberField = new UINumberField();
this.add(numberField, BorderLayout.CENTER);
KeyListener textKeyListener = new KeyAdapter() {
public void keyReleased(KeyEvent evt) {
int code = evt.getKeyCode();
if (code == KeyEvent.VK_ESCAPE) {
numberField.setText(oldValue);
}
if (code == KeyEvent.VK_ENTER) {
fireEditingStopped();
} else {
fireStateChanged();
}
}
};
this.numberField.addKeyListener(textKeyListener);
this.numberField.setHorizontalAlignment(SwingConstants.RIGHT);
this.setValue(value);
this.setName(name);
}
@Override
public UINumberField getSwingComponent() {
return numberField;
}
public void setEnabled(boolean enabled) {
this.numberField.setEnabled(enabled);
}
public void selected() {
this.requestFocus();
}
public String getIconName() {
return "type_double";
}
public void requestFocus() {
this.numberField.requestFocus();
}
}