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; }
相关推荐
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
实例9 设计可以弹出系统时间对话框的程序 实例10 设计可显示圆形的程序 实例11 设计具有折叠功能的树状列表 实例12 制作可以浏览照片的程序 实例13 设计下拉列表 实例14 设计添加列表项程序 实例15 制作含有位图的...
1. 在VB(Visual Basic)中,若要弹出一个消息框,可以使用`MsgBox`函数来实现。例如,`MsgBox("你好,世界!")`会在屏幕上显示一个包含“你好,世界!”消息的对话框。 2. 设计弹出式菜单时,首先要通过`Menu`控件...
Delphi XE是一款强大的Windows应用程序开发工具,以其丰富的控件库和高效的编译器而闻名。在描述中未提供具体信息,但通过标题和标签,我们可以深入探讨一下Delphi XE中的主要控件及其用途。 1. **标准控件...
10. **对话框(Dialog)**:弹出式界面,可以用来显示警告、询问或提供额外信息。包括警告对话框、单选对话框、多选对话框等。 11. **浮动按钮(FloatingActionButton)**:设计指南推荐的圆形按钮,通常用作主要操作的...
6. **菜单栏和对话框**:Tkinter也支持创建菜单栏和弹出对话框,如`Menu`类用于创建菜单,`filedialog`模块提供了打开、保存文件等对话框。 7. **主题和样式**:通过Tkinter的`ttk`模块(Themed Tkinter),可以...
15. **对话框(Dialog)**:在当前界面之上弹出的小窗口,用于提示或获取用户输入。 16. **菜单(Menu)**:在应用的顶部或底部显示的操作选项。 17. **浮动操作按钮(FloatingActionButton)**:圆形按钮,常用于主要操作...
可使用标准Windows元素创建图形用户界面(GUI)屏幕,包括框架窗口、会话、菜单、工具栏、标签、按钮、复选框、单选按钮、滚动条、滑动调节框、微调框、组合框、树列表、列表框、编辑框以及静态文本等。 通过现有...
树形菜单jquery.popup支持文本框弹出层选择项插件 47.通用性强的jquery带箭头跟随的垂直菜单组(jquery vmenu)插件下载 48.推荐jQuery黑色多级横向菜单导航(带动画效果) 49.学习jQuery简单伸缩菜单代码实例 ...
11. **信息框**:添加信息框(弹出信息)通常通过行为面板中的JavaScript代码实现。 12. **表格**:表格在网页布局中起重要作用,可以嵌套、添加链接,通过CSS样式修饰,也可辅助布局。 13. **事件**:要实现打开...
Menu小部件用于创建下拉菜单和弹出菜单,是实现菜单栏和其他导航功能的关键组件。它支持子菜单的嵌套,以及菜单项的启用/禁用状态控制。 ### 8. Text小部件 Text小部件是一个多行文本编辑器,能够处理大量的文本...