2013-05-09 2 views
1

Здравствуйте, у меня возникли проблемы с добавлением изображения в графический интерфейс в Groovy. Может ли кто-нибудь помочь мне с кодом, который сможет это сделать? Я искал везде и не нашел ответа. Я пытаюсь закончить проект, и не могу понять это.Добавление изображений в графический интерфейс в Groovy

Я использую SwingBuilder создать свой GUI вот что я пробовал:

// add a text panel 
def mainPanel = { 
     sB.panel(layout : new BorderLayout(), background: java.awt.Color.LIGHT_GRAY){ 
      label(text: 'Welcome to your closet', horizontalAlignment: JLabel.CENTER, 
        constraints : BorderLayout.CENTER, icon: ImageIcon('/home/*****/Documents/ComputerScience/CS315/icons/create.png')) 
      buttonPanel() 
     } 
} 

ошибка, я получаю:

Caught: groovy.lang.MissingMethodException: No signature of method: GUI.ImageIcon() is applicable for argument types: (java.lang.String) values: [/home/*****/Documents/ComputerScience/CS315/icons/create.png] 
groovy.lang.MissingMethodException: No signature of method: GUI.ImageIcon() is applicable for argument types: (java.lang.String) values: [/home/*****/Documents/ComputerScience/CS315/icons/create.png] 
at GUI$_closure11_closure119.doCall(ClosetGUI.groovy:888) 

используя следующее исправление:

label(text: 'Welcome to your closet', horizontalAlignment: JLabel.CENTER, 
        constraints : BorderLayout.CENTER, icon: imageIcon(resource: '/home/*****/Documents/ComputerScience/CS315/icons/create.png')) 
      buttonPanel() 

Я получаю следующее сообщение об ошибке:

Caught: java.lang.RuntimeException: Failed to create component for 'imageIcon' reason:  java.lang.RuntimeException: In imageIcon the value argument 'null' does not refer to a file or a class resource 
java.lang.RuntimeException: Failed to create component for 'imageIcon' reason:  java.lang.RuntimeException: In imageIcon the value argument 'null' does not refer to a file or a class resource 
at GUI$_closure11_closure119.doCall(ClosetGUI.groovy:888) 

Любая помощь будет изумительной Спасибо!

+0

Вы можете разместить код? Вы используете GroovyFX? Свинг? SwingBuilder? Что вы пробовали? Какая ошибка вы получаете? –

+0

Извините, что я использую SwingBuilders. Я отправлю код прямо сейчас! – ola

+0

вы должны использовать нижний регистр изображения, а не в верхнем регистре ImageIcon. –

ответ

0

Если вы используете SwingBuilder, загрузка изображения может быть сделано следующим образом:

imageIcon(resource:'/groovy/ui/ConsoleIcon.png') 

Или

label(icon:imageIcon('http://docs.codehaus.org/download/userResources/GROOVY/logo') 

Это основано на документации нашли here.

Я попытался следующие, и для меня, это работает:

import groovy.swing.SwingBuilder; 
import java.awt.FlowLayout; 


swing = new SwingBuilder(); 
gui = swing.frame(title: "Dan's Gui", size: [400, 200], defaultCloseOperation: javax.swing.WindowConstants.EXIT_ON_CLOSE) { 

    panel() { 
     myLabel = label(text: "") 
    } 
    panel(layout: new FlowLayout()) { 

     button(text: 'next', actionPerformed: { myLabel.setText("bye") }) 
     button(text: 'previous', actionPerformed: { myLabel.setText("hello") }) 
     label(icon: imageIcon(new URL('http://jworks.nl/wp-content/jworks/logo.png'))) 
    } 
} 

gui.show(); 
+0

, используя второй метод, я все еще получаю ошибку, которую я опубликовал в своем вопросе – ola

+0

Не могли бы вы попробовать обновленный пример? Я работаю для меня. Что я изменил, так это то, что я добавил новый URL() для получения изображения. –

+0

Обновленный пример работает, но как я могу перевести его на использование ресурса из сохраненного файла? Пользователь будет выбирать файлы для показа в виде изображений ... – ola

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