Tag: 约束

如何使用约束编程优化购物篮?

我有一份我想买的物品清单。 这些物品由不同的商店和不同的价格提供。 商店有个人送货费用。 我正在寻找最优购物策略(以及支持它的java库)以最低的总价格购买所有商品。 例: Shop1在Shop1以100美元的价格在Shop2以111美元的价格提供。 商品2在Shop1以90美元的价格在Shop2以85美元的价格提供。 Shop1的运费:如果总订单<$ 150,则需要10美元; 否则为$ 0 Shop2的运费:如果总订单<$ 50则需要5美元; 否则为$ 0 如果我在Shop1购买Item1和Item2,总成本为100美元+ 90美元+ 0美元= 190美元。 如果我在Shop2购买Item1和Item2,总成本为111美元+ 85美元+ 0美元= 196美元。 如果我在Shop1购买Item1,在Shop2购买Item2,则总成本为100美元+ 10美元+ 85美元+ 0美元= 195美元。 如果我在Shop1订购Item1和Item2:190美元,我会得到最低价格 到目前为止我尝试了什么 之前我问了另一个问题 ,这让我进入了约束编程领域。 我看了一下奶油和巧克力 ,但我没弄明白如何创建一个模型来解决我的问题。 | shop1 | shop2 | shop3 | … —————————————– item1 | p11 | p12 | p13 | item2 | p21 | […]

Java中对类的双重generics约束:扩展了ConcreteClass和I.

有没有办法在Java中定义一个类似于以下C#genericsconstratint的generics约束? class Class1 where I : Interface1, Class2 : I 我试着这样做: class Class1 但编译器抱怨“Class2”部分:Type参数不能跟随其他边界。

带有LayoutManager的JLayeredPane

情况:绘制一堆扑克牌,就像在纸牌游戏中一样。 很好地堆积。 为此,我将JLayeredPane与LayoutManager接口的自定义实现结合使用。 使用自定义LayoutManager的原因是堆栈方向不同,有时候扑克牌完全相互覆盖,有时是部分覆盖,这个逻辑对于LayoutManager来说似乎是一个很好的工作,因为这基本上归结为设置的位置。牌。 因此, LayoutManager负责设置堆栈中所有组件的X坐标和Y坐标。 另一方面, JLayeredPane负责其Z坐标(通过其层)。 将组件添加到JLayeredPane是这样的: JLayeredPane pane = new JLayeredPane(); pane.setLayout(new StackLayout(…)); pane.add(new CardView(…), new Integer(j)); 其中new Integer(j)是卡的一层。 由于JLayeredPane的合同,这必须是Integer 。 这里的问题是,由于上述原因,我的StackLayout不能有任何其他约束对象而不是Integer 。 LayoutManager接口要求您实现以下方法: addLayoutComponent(Component comp, Object constraints); 并且传递的Object将始终为Integer 。 在我的特殊情况下,我很幸运,因为我的XY坐标可以根据Z坐标计算。 例如,层k的卡必须位于Y坐标k * offset 。 所以在我的情况下,约束对象是一个Integer不是问题。 我想知道当Z坐标和XY坐标之间没有相关性时你应该做什么? 你怎么解决这个问题呢? 例如,我如何将GridBagLayout与JLayeredPane结合使用,其中第一个需要GridBagConstraints对象,第二个需要Integer对象? 当然,GBL将以组件不重叠的方式布局,但这只是想法。

约束注释中的变量字段

我需要创建一个自定义约束注释,它可以访问我的bean的另一个字段的值。 我将使用此注释来validation该字段,因为它取决于另一个的值,但是我定义它的方式编译器说“我的字段的注释属性的值”必须是一个常量表达式。 我用这种方式定义了它: @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy=EqualsFieldValidator.class) @Documented public @interface EqualsField { public String field(); String message() default “{com.myCom.annotations.EqualsField.message}”; Class[] groups() default {}; Class[] payload() default {}; } public class EqualsFieldValidator implements ConstraintValidator{ private EqualsField equalsField; @Override public void initialize(EqualsField equalsField) { this.equalsField = equalsField; } @Override public boolean isValid(String thisField, ConstraintValidatorContext arg1) { //my validation […]

如何处理JPA唯一约束违规?

当违反唯一约束时,抛出javax.persistence.RollbackException 。 但抛出RollbackException可能有多种原因。 如何才能发现违反了一个独特的约束? try { repository.save(article); } catch(javax.persistence.RollbackException e) { // how to find out the reason for the rollback exception? }

使用BorderLayout从JPanel中删除CENTER元素

有没有办法删除添加到带有BorderLayout的JPanel的CENTER中的Component ,而不必引用Component本身?