Scala を使用して GUI を作成しています。これは、アルゴリズムに依存するが textField に信号を再生する必要があります。sin(2*Pi*400*t)。再生機能は完璧に動作しますが、問題は GUI への入力です。textField は関数を受け取り、それを文字列に変換します。文字列を関数に変換する簡単な方法があるのではないかと思っていました。入力をさまざまな有効な関数に一致させることを検討していましたが、ユーザーにもっと作成してもらいたいので、可能な関数を制限したくありません
私はまだ Scala に比較的慣れていません。これが私がこれまでに持っているコードです。機能に焦点を当てた基本的なセットアップです。
object PlayApp extends SimpleGUIApplication {
def top = new MainFrame {
title = "Play Function App"
val label = new Label("Type in function to be played")
object Function extends TextField ( columns = 10)
val label2 = new Label("Type in length of time to play")
object Time extends TextField { columns = 10}
val button = new Button("Play")
contents = new BoxPanel(Orientation.Vertical) {
contents += label
contents += Function
contents += label2
contents += Time
contents += button
border = Swing.EmptyBorder(50, 50, 20, 50)
}
var f = "sin(t)"
var x = 0
listenTo(Function, Time, button)
reactions += {
case EditDone(Function) =>
f = Function.text.toString
case EditDone(Time) =>
x = Time.text.toInt
case ButtonClicked(b) =>
play(t => f.toDouble,0,x)
}
}
}