Browse Source
* commit '3449016840c30f15809288f55099bccc9a6921fa': 提示框简化,更简洁了 1. 重写了自己的model来在set属性值之前进行判断并给出弹窗提示; 2. 继承DoubleEditor来实现兼容弹窗显示效果的控件,复原之前基础控件的所有更改。 基础控件类抽取需要的代码单独作一个方法,在子类中重写 重载输入框的光标事件方法,不管是光标移出还是按下回车(enter),会立即触发表单移动端高度属性的setter方法,并给出弹窗提示。master
superman
9 years ago
4 changed files with 110 additions and 15 deletions
@ -0,0 +1,59 @@ |
|||||||
|
package com.fr.design.gui.xtable; |
||||||
|
|
||||||
|
import com.fr.base.FRContext; |
||||||
|
import com.fr.design.designer.creator.CRPropertyDescriptor; |
||||||
|
import com.fr.design.designer.creator.XCreator; |
||||||
|
import com.fr.design.mainframe.FormDesigner; |
||||||
|
import com.fr.general.Inter; |
||||||
|
import java.lang.reflect.Method; |
||||||
|
import com.fr.general.ComparatorUtils; |
||||||
|
import com.fr.report.stable.FormConstants; |
||||||
|
|
||||||
|
import javax.swing.*; |
||||||
|
|
||||||
|
public class ReportAppPropertyGroupModel extends PropertyGroupModel { |
||||||
|
|
||||||
|
private static final double MAX_HEIGHT = 0.8; |
||||||
|
|
||||||
|
public ReportAppPropertyGroupModel(String name, XCreator creator, CRPropertyDescriptor[] propArray, |
||||||
|
FormDesigner designer) { |
||||||
|
super(name, creator, propArray, designer); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean setValue(Object value, int row, int column) { |
||||||
|
double state = 0; |
||||||
|
if (column == 0) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
if (value instanceof Double) { |
||||||
|
state = (Double) value; |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
Method m = properties[row].getWriteMethod(); |
||||||
|
if (state > MAX_HEIGHT) { |
||||||
|
//弹窗提示
|
||||||
|
JOptionPane.showMessageDialog(null, |
||||||
|
Inter.getLocText("FR-Designer_Mobile-Warning"), |
||||||
|
Inter.getLocText("FR-Designer_Tooltips"), |
||||||
|
JOptionPane.PLAIN_MESSAGE); |
||||||
|
return false; |
||||||
|
} |
||||||
|
m.invoke(dealCreatorData(), value); |
||||||
|
//属性名称为控件名时,单独处理下
|
||||||
|
if(ComparatorUtils.equals(FormConstants.NAME, properties[row].getName())){ |
||||||
|
creator.resetCreatorName(value.toString()); |
||||||
|
} |
||||||
|
properties[row].firePropertyChanged(); |
||||||
|
return true; |
||||||
|
} catch (Exception e) { |
||||||
|
FRContext.getLogger().error(e.getMessage(), e); |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private Object dealCreatorData() { |
||||||
|
return creator.getPropertyDescriptorCreator().toData(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
package com.fr.design.mainframe.widget.editors; |
||||||
|
|
||||||
|
import javax.swing.*; |
||||||
|
import java.awt.event.KeyAdapter; |
||||||
|
import java.awt.event.KeyEvent; |
||||||
|
import java.awt.event.KeyListener; |
||||||
|
import java.text.ParseException; |
||||||
|
|
||||||
|
public class RefinedDoubleEditor extends DoubleEditor { |
||||||
|
|
||||||
|
private JFormattedTextField textField; |
||||||
|
|
||||||
|
public RefinedDoubleEditor() { |
||||||
|
super(); |
||||||
|
textField = (JFormattedTextField) super.getCustomEditor(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public KeyListener createKeyListener() { |
||||||
|
return new KeyAdapter() { |
||||||
|
|
||||||
|
public void keyReleased(KeyEvent e) { |
||||||
|
try { |
||||||
|
textField.commitEdit(); |
||||||
|
return; |
||||||
|
} catch (ParseException e1) { |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue