forked from fanruan/finekit
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
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(); |
|
} |
|
|
|
} |