我想用scalafx在scala上使用javafx2。用鼠標點擊並在javafx2上懸停的奇怪行爲
我寫了一個簡單的應用程序,並添加一個菜單和一個菜單項。當我點擊菜單並將其懸停在菜單項上時,有時候不會突出顯示菜單,因此無法點擊。 爲了檢查我是否在我的代碼中做錯了什麼,我在Windows機器上運行完全相同的代碼,它只是工作。
我不明白爲什麼會發生這種情況。我想這一般與團結或GNOME或Linux有關。
有沒有人遇到同樣的問題?有什麼方法可以解決或克服它嗎?
感謝我提前
代碼示例:只有菜單有奇怪的行爲
package com.msp.ippokratis.ui
import scalafx.Includes._
import scalafx.collections.ObservableBuffer
import scalafx.collections.ObservableBuffer.observableBuffer2ObservableList
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.Scene
import scalafx.scene.layout.{BorderPane,FlowPane,Priority}
import scalafx.scene.control.{MenuBar,MenuItem,Menu,Button,ComboBox}
import scalafx.event.ActionEvent
object Exampl extends JFXApp {
stage = new PrimaryStage {
scene = new Scene {
content = new BorderPane {
prefHeight = 400
prefWidth = 400
top = new MenuBar {
menus = Seq(
new Menu {
text = "File"
items = Seq(
new MenuItem {
text = "Println"
onAction = (evt: ActionEvent) => {
println("Clicked Menu Item Println")
}
})
})
}
center = new FlowPane {
hgrow = Priority.ALWAYS
content = Seq(
new Button {
text = "Sample Button"
onAction = (evt: ActionEvent) => {
println("Button Clicked")
}
},
new ComboBox {
val seq = List("Apple", "Orange", "Mango", "Banana").toSeq
items = ObservableBuffer(seq.asInstanceOf[Seq[Nothing]])
onAction = (evt: ActionEvent) => {
println("Combobox")
}
})
}
}
}
}
}
編輯1:如果我點擊菜單,用鍵盤,按導航進入它只是在Linux上工作過。
如果包含一些編譯和展示奇怪行爲的代碼(如果可能的話,只是簡化爲相關問題),您可能會有更好的迴應機會。 – huynhjl 2013-05-06 12:16:34
嘗試添加-Dsun.java2d。對於Java 6,pmoffscreen = false;對於Java 7,則爲-Dsun.java2d.xrender = true。請參閱下面的更新回答。 – nadavwr 2013-05-07 10:35:50