class1:定义单选按钮的内容
public enum TradeOperationEnum { BUY("买入"), SALE("卖出"); String displayName; TradeOperationEnum(String displayName) { this.displayName = displayName; } public String getDisplayName() { return this.displayName; } }
class2:定义单选按钮
import com.my.stock.view.trade.vo.TradeOperationEnum; import org.vaadin.viritin.fields.EnumSelect; public class TradeInformationForm extends AbstractForm<TradeInformationVO> { private static final long serialVersionUID = -5238090169742945624L; MTextField name = new MTextField("产品名称"); MDateField tradeDate = new MDateField("交易日期"); MTextField holding = new MTextField("持有量(张)"); MTextField price = new MTextField("现价(元)"); MTextField amount = new MTextField("数量(张)"); EnumSelect<TradeOperationEnum> operation = new EnumSelect<TradeOperationEnum>("操作").withSelectType(OptionGroup.class); @PostConstruct void init() { } public void configure() { name.setReadOnly(false); tradeDate.setValue(new Date()); tradeDate.setRangeEnd(DateTime.now().toDate()); } public void setAmount(String amount) { amount.setReadOnly(false); amount.setValue(amount); amount.setReadOnly(true); }
@Override protected Component createContent() { operation.setCaptionGenerator(o -> o.getDisplayName()); tradeDate.setValue(new Date()); getSaveButton().setCaption("添加交易记录"); getResetButton().setCaption("重填"); configure(); FormLayout formLayout = new MFormLayout(bondCode, bondName, productName, holding, tradeDate, price, operation, amount, getToolbar()); return formLayout; } public MTextField getBondCode() { return bondCode; } public MTextField getBondName() { return bondName; } }
class3:
public class TradeView extends TradeLayout implements View { TradeInformationForm tradeInformationForm = new TradeInformationForm(); @PostConstruct void init() { configTradeForm(); } void configTradeForm() { TradeInformationVO tradeInformationVO = new TradeInformationVO(); tradeInformationForm.setEntity(tradeInformationVO); tradeInformationForm.configure(); tradeInformationForm.operation.setOptions(TradeOperationEnum.BUY,TradeOperationEnum.SALE); tradeInformationForm.getSaveButton().setEnabled(false); tradeInformationForm.setVisible(true);//false tradeInformationForm.setSavedHandler(this::saveTradeRecord); editPanel.setContent(tradeInformationForm); } void saveTradeRecord(TradeInformationVO tradeInformationVO) { if (tradeInformationVO.getName() ==null) { Notification.show("正确设置买卖信息!", Type.ERROR_MESSAGE); return; } if (tradeInformationVO.getAmount() < 1) { Notification.show("设置交易数量 !", Type.ERROR_MESSAGE); return; } if (tradeInformationVO.getOperation() == TradeOperationEnum.SALE) if (tradeInformationVO.getAmount() > tradeInformationVO .getHolding()) { Notification.show("卖出数额超限 !", Type.ERROR_MESSAGE); return; String mess = getConfirmMess(tradeInformationVO); ConfirmDialog.show(this.getUI(), "添加交易确认: ", mess, "确认", "取消", new ConfirmDialog.Listener() { private static final long serialVersionUID = 593093678633114533L; public void onClose(ConfirmDialog dialog) { if (dialog.isConfirmed()) { addTradeRecord(tradeInformationVO); logTrade(tradeInformationVO); } else { // tradeInformationForm.getSaveButton().setEnabled(true); } } }); } private void addTradeRecord(TradeInformationVO tradeInformationVO) { if (tradeInformationVO.getOperation() == TradeOperationEnum.BUY) {
amount = amount + tradeInformationVO.getAmount(); } else amount = amount - tradeInformationVO.getAmount();
} }
class4:
import com.vaadin.annotations.DesignRoot; @DesignRoot public class TradeLayout extends VerticalLayout { private static final long serialVersionUID = -2659591538746780121L; Panel editPanel; public TradeLayout() { Design.read(this); splitPanel.setSplitPosition(60, Unit.PERCENTAGE); } }
class5:
import lombok.Data; /** * Created by shawz on 12/26/2015. */ @Data public class TradeInformationVO { private String name; private long holding; private double price; @NotNull private long amount; @NotNull(message = "请选择交易日期") private Date tradeDate; private TradeOperationEnum operation; }
相关推荐
1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143720369 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
CPPC++_更好的Windows字体渲染
10018
cppc++
二环北路东段欣心家园小区商业B段(中石油加油站东邻).m4a
cppc++
C2005
Python课程设计之高校教务系统
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
10023
使用QUndoStack撤销栈实现QTreeWidget删除item及撤销、重做
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
Python课程设计之飞机大战3.zip
SpringBoot分布式事务
CPPC++_tensorort for yolo系列YOLOv10YOLOv9YOLOv8YOLOv7YOLOv6Y
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
收录了「IT无知君」CSDN博客中涉及的Java项目源码,还有许多的开发工具类,都是我自己在用在不断维护的,需要请进!
CPPC++_更新你的CFW作弊码固件,更直接地从你的任天堂交换机
test-dadfateq