加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

user-interface – 如何扩展scala.swing?

发布时间:2020-12-16 08:51:58 所属栏目:安全 来源:网络整理
导读:在回答关于如何用Swing实现某种效果的 previous question时,我被引导到了JDesktopPane和JInternalFrame.不幸的是,scala.swing似乎没有任何一个类的包装器,所以我留下来扩展它. 我需要知道和做些什么来为这些类创建最低限度可用的包装器,与scala.swing一起使
在回答关于如何用Swing实现某种效果的 previous question时,我被引导到了JDesktopPane和JInternalFrame.不幸的是,scala.swing似乎没有任何一个类的包装器,所以我留下来扩展它.

我需要知道和做些什么来为这些类创建最低限度可用的包装器,与scala.swing一起使用,以及制作大多数这些类的附加步骤是什么?

编辑:

正如某人所建议的,让我解释一下我打算实现的效果.我的程序控制(个人)彩票投注.所以我有很多不同的门票,每张门票可以有不同的赌注和不同的有效性.

这个想法是在一个单独的“空间”中显示每个票证,JInternalFrames似乎正是我想要的,让人们创建新票证,从文件加载它们,将它们保存到文件,以及通常检查或编辑信息每个.

除此之外,还需要有一个空间来显示彩票结果,我打算进一步发展该计划,以便能够控制集体投注 – 谁贡献了多少,以及如何分配任何获胜.我还没有考虑过这个界面.

请注意:

>我不能“只使用”Java类,并且仍然充分利用Scala swing功能.上一个问题的答案已经告诉我如何用Java类做我想做的事情,这不是我在这里要求的.
>阅读现有scala.swing类的源代码以了解如何做到这一点是我试图通过这个问题避免的工作.

解决方法

您可以考虑使用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,并允许您在其上调用此方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读