Я начинаю с кода, который был найден здесь и его можно увидеть ниже:
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()
}
Использование:
object ImagePanelDemo extends SimpleSwingApplication
{
def top = new MainFrame {
title = "Image Panel Demo"
contents = new ImagePanel
{
imagePath = ("../testImage.jpg")
}
}
}
Я хочу расширить это и придать панели изображений форму GridPanel. Я хочу, чтобы панель изображений была GridPanel с фоном изображения. Кто-нибудь знает, как это реализовать?
Моя текущая реализация выглядит следующим образом:
class ImagePanel(rows0: Int, cols0: Int) extends GridPanel(rows0, cols0)
{
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. У меня слишком мало аргументов. Я не знаю, как именно добавить новые аргументы строк и столбцов.