2
這是我第一次使用Swing和Scala進行的實驗,並且在下面有幾個關於我的代碼的問題。它所做的只是生成一個帶有彩色矩形的窗口,該窗口會改變顏色。請隨時回答一個或任何問題。斯卡拉擺動新手問題
1)我用下面一個Java的ActionListener,因爲我無法工作,如何讓javax.swing.Timer中爲發佈商合作。有沒有辦法使用Scala模型,即listenTo()
- 或者這是做到這一點的方法嗎?
2)我重寫的preferredSize
面板中的值似乎不起作用:窗口出現最小化。在我的Java版本中,我重寫了getPreferredSize
方法,但面板中沒有這種方法,所以我認爲這是實現方法,但爲什麼它不起作用?
3)paintComponent
根本沒有記錄在Scala API文檔中。我認爲這是因爲它在Java中是protected
訪問,但它看起來像一個疏忽。我是否正確覆蓋paintComponent或者它是隱藏的,因爲我應該使用記錄的paint
方法?
4)斯卡拉似乎並沒有對成分getWidth()
和getHeight()
方法 - 它是標準的使用size.width
和size.height
?
import swing._
import java.awt.{Graphics, Color}
import java.awt.event.{ActionEvent, ActionListener}
import javax.swing.Timer
object ColorPanel extends SimpleSwingApplication {
private var c: Color = new Color(0)
def top = new MainFrame {
title = "Flash!"
contents = p
}
val p = new Panel with ActionListener {
override val preferredSize = new Dimension(200, 200)
override def paintComponent(g: Graphics2D) {
g.setColor(c)
g.fillRect(0, 0, size.width, size.height)
}
def actionPerformed(e: ActionEvent) {
c = new Color((c.getRGB() + 1000) % 16777216)
repaint
}
}
val timer = new Timer(100, p)
timer.start()
}
謝謝,非常有幫助 –