在Scala的Swing Frame上指定一个框架图标

时间:2012-07-03 09:42:51

标签: swing scala icons nimbus

如何在Scala的scala.swing.Frame课程中设置新的框架图标? Frame.iconImage: ImageFrame.iconify()背后的意图是什么?我无法弄清楚,他们在做什么。

这是我的最后一次尝试

import scala.swing.Frame

class MyFrame extends Frame {
  iconImage = toolkit.getImage("src/main/resources/icon.png")
  visible = true
}

我还尝试了其他几种方法,但没有任何效果。

2 个答案:

答案 0 :(得分:0)

你有什么应该工作,但如果getImage无法找到该文件,它将无声地失败。 由于你有一个相对路径,可能是因为你的代码没有在你想要的目录中执行。

在Ubuntu上,这应该突出显示差异。我得到一个带有笑脸图标的窗口和一个带有标准java图标的窗口。

new Frame() {
  iconImage = toolkit.getImage("/usr/share/icons/gnome/16x16/emotes/stock_smiley-10.png")
  size = new Dimension(200, 200)
  visible = true
}
new Frame() {
  iconImage = toolkit.getImage("xxx")
  size = new Dimension(200, 200)
  visible = true
}

答案 1 :(得分:0)

我猜你是在OS X.可悲的是,图标装饰不适用于OS X的外观和感觉,它也不适用于Nimbus的外观和感觉,似乎没有特定的窗户装饰(使用来自OS X的标题栏。)

所以你需要一个外观和感觉,它会绘制自己的窗口标题栏:

import scala.swing._
import javax.swing._
UIManager.setLookAndFeel(new plaf.metal.MetalLookAndFeel)
JFrame.setDefaultLookAndFeelDecorated(true)

val f = new Frame {
   iconImage = toolkit.getImage(new java.net.URL(
      "http://www.scala-lang.org/sites/default/files/favicon.gif"))
   size = new Dimension(200, 200)
   visible = true
}

OS X窗口标题栏的唯一机会是,如果要使用用于特定文件的默认图标进行装饰。

在此处查找Window.documentFilehttp://developer.apple.com/library/mac/#technotes/tn2007/tn2196.html#//apple_ref/doc/uid/DTS10004439