在我的摇摆GUI上,我有数据行和一些按钮,用户选择多个项目,然后选择一个按钮。
每个按钮对数据应用不同的规则,因此需要为每个按钮调用不同的函数,我使用的是MVC设计模式,我的问题是这样,我应该如何处理每个按钮的不同需求? / p>
创建一个扩展JButton的类'MyButton',然后给它一些Enum,然后我可以创建一个动作监听器,然后通过检查Enum检查ActionListener中哪个按钮被按下。
与上面类似,但每个按钮使用不同的类,然后使用instanceof确定已按下哪个按钮。
为每个按钮实现单独的ActionListener
其他
哪种方法最好?任何建议都会受到极大的欢迎!
答案 0 :(得分:1)
为每个按钮实现一个单独的侦听器。
首先是因为这是通常的解决方案。其次,在点击它之间没有理由扩展JButton只做其他事情。这就是ActionListener的作用。 Swing组件按原样设计为使用,您通常不应扩展。
答案 1 :(得分:0)
它是MVC:你将逻辑(在Actions中)和视图(按钮)分开。
不需要使用枚举或子类JButton。当你有几十个按钮时,你可以做些什么来保持干净,是一个工厂类来创建Action实例。
答案 2 :(得分:0)
如果我正确地提出您的问题,您的意思是说,您在订单项中有数据,并且每个订单项都有一个按钮,按下该按钮会调用与订单项相关的规则。
如果是,那么
第一种方法听起来相当不错。你可以拥有一个工厂,它可能有一个用枚举变量和相应规则键入的hashmap。在动作侦听器内部从工厂获取规则并调用它。
通过这种方式,您可以正确地分离关注点,并且您的动作侦听器将充当控制器,不了解规则和数据项。