2011-04-22 59 views
10

如何在Scala Swing組件中加載和顯示圖像?Scala Swing圖像

+0

斯卡拉與它有什麼關係? – 2011-04-22 05:09:45

+0

@安德魯·湯普森 - 斯卡拉翻新了鞦韆。我想以與修改一致的方式使用圖像。 – dsg 2011-04-22 05:28:48

+0

好吧,明白了。似乎我的答案是遠離軌道。 :P – 2011-04-22 05:42:57

回答

12

我通常使用的標籤與ImageIcon的爲......像:

val label = new Label { 
    icon = new ImageIcon("path to the image file") 
} 
+3

我假設這是一個'javax.swing.ImageIcon'。 – dsg 2011-04-23 05:40:26

+0

是的,確切地說:-) – 2011-04-23 07:20:21

9

這裏是擴展Scala的Panel

import swing._                 

import java.awt.image.BufferedImage           
import java.io.File               
import javax.imageio.ImageIO             

class ImagePanel extends Panel             
{                    
    private var _imagePath = ""             
    private var bufferedImage:BufferedImage = null        

    def imagePath = _imagePath             

    def imagePath_=(value:String)            
    {                   
    _imagePath = value               
    bufferedImage = ImageIO.read(new File(_imagePath))       
    }                   


    override def paintComponent(g:Graphics2D) =         
    {                   
    if (null != bufferedImage) g.drawImage(bufferedImage, 0, 0, null)   
    }                   
}                    

object ImagePanel                
{                    
    def apply() = new ImagePanel()            
} 

使用的ImagePanel的實現:

object ImagePanelDemo extends SimpleSwingApplication 
{ 

    def top = new MainFrame { 
    title = "Image Panel Demo" 

    contents = new ImagePanel 
    { 
     imagePath = ("../testImage.jpg") 
    } 
    } 
} 
+1

您可能還希望將'preferredSize'設置爲圖像尺寸,至少達到某個最大值(例如屏幕尺寸)。 – 2011-04-22 07:06:45