user-interface – 如何扩展scala.swing?
在回答关于如何用Swing实现某种效果的
previous question时,我被引导到了JDesktopPane和JInternalFrame.不幸的是,scala.swing似乎没有任何一个类的包装器,所以我留下来扩展它.
我需要知道和做些什么来为这些类创建最低限度可用的包装器,与scala.swing一起使用,以及制作大多数这些类的附加步骤是什么? 编辑: 正如某人所建议的,让我解释一下我打算实现的效果.我的程序控制(个人)彩票投注.所以我有很多不同的门票,每张门票可以有不同的赌注和不同的有效性. 这个想法是在一个单独的“空间”中显示每个票证,JInternalFrames似乎正是我想要的,让人们创建新票证,从文件加载它们,将它们保存到文件,以及通常检查或编辑信息每个. 除此之外,还需要有一个空间来显示彩票结果,我打算进一步发展该计划,以便能够控制集体投注 – 谁贡献了多少,以及如何分配任何获胜.我还没有考虑过这个界面. 请注意: >我不能“只使用”Java类,并且仍然充分利用Scala swing功能.上一个问题的答案已经告诉我如何用Java类做我想做的事情,这不是我在这里要求的. 解决方法
您可以考虑使用Scala的“隐式转换”机制.你可以这样做:
implicit def enrichJInternalFrame(ji : JInternalFrame) = new RichJInternalFrame(ji) 您现在定义一个RichJInternalFrame()类,它接受一个JInternalFrame,并且您可以使用任何方法来扩展JInternalFrame,例如: class RichJInternalFrame(wrapped : JInternalFrame) { def showThis = { wrapped.show() } } 这将创建一个新方法showThis,它只是在JInternalFrame上调用show.您现在可以在JInternalFrame上调用此方法: val jif = new JInternalFrame() println(jif.showThis); Scala会自动将jif转换为RichJInternalFrame,并允许您在其上调用此方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |