2012-07-03 3 views
0

Как вы можете установить новую иконку кадра на Scala's scala.swing.Frame? Каковы намерения, стоящие за Frame.iconImage: Image и Frame.iconify()? Я не могу понять, что они делают.Задание значка рамки на качающейся кадре Scala

Вот моя последняя попытка

import scala.swing.Frame 

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

Я также попробовал несколько других методов, но ничего не получалось.

ответ

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.documentFile здесь: http://developer.apple.com/library/mac/#technotes/tn2007/tn2196.html#//apple_ref/doc/uid/DTS10004439

+0

«[...] не работает и для Nimbus. [...]». Это оно. Я использую Нимбус, но не упоминал об этом здесь. – pvorb

+0

ср. http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=a655306f41e2c17d50e0bf54ea6?bug_id=6675399 - не знаю, сделали ли они что-нибудь об этом в Java 7 (я придерживаюсь Java 6 Apple) –

+0

Нет они этого не сделали. Я использую Java 7. – pvorb

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 
} 
+0

Путь в порядке, я уже проверил. – pvorb

Смежные вопросы