8

Swingで特定の効果を実現する方法に関する以前の質問に答えて、私はJDesktopPaneとJInternalFrameに誘導されました。残念ながら、scala.swingにはどちらのクラスのラッパーも含まれていないようです。そのため、拡張する必要があります。

これらのクラスで最小限に使用できるラッパーを作成し、scala.swingで使用したり、scala.swingで使用したりするには、何を知って実行する必要がありますか。また、それらを最大限に活用するための追加の手順は何でしょうか。

編集:

誰かが提案したように、私が達成しようとしている効果について説明させてください。私のプログラムは(個人的な)宝くじの賭けを管理しています。だから私はいくつかの異なるチケットを持っており、それぞれがいくつかの異なる賭けとさまざまな有効性を持つことができます。

アイデアは、これらのチケットのそれぞれを別々の「スペース」に表示することであり、JInternalFramesは私が望むもののようであり、人々が新しいチケットを作成し、ファイルからロードし、ファイルに保存し、一般的に情報をチェックまたは編集できるようにしますそれぞれに。

それに加えて、宝くじの結果を表示するスペースが必要であり、私はプログラムを進化させて、誰がどれだけ貢献し、どのように勝ちを分割するかという集団賭けを制御できるようにするつもりです。そのためのインターフェースはまだ検討していません。

その点に注意してください:

  • Javaクラスを「ただ使用」することはできませんが、Scalaスイング機能を最大限に活用することはできません。前の質問の答えは、Javaクラスでやりたいことを行う方法をすでに教えてくれていますが、それは私がここで求めていることではありません。

  • 既存のscala.swingクラスのソースコードを読んでそれを行う方法を学ぶことは、この質問で避けようとしている作業です。

4

5 に答える 5

3

Scalaの「暗黙の変換」メカニズムを検討するかもしれません。あなたはこのようなことをすることができます:

implicit def enrichJInternalFrame(ji : JInternalFrame) = 
               new RichJInternalFrame(ji)

ここで、JInternalFrameを受け取り、JInternalFrameを拡張したいメソッドを持つクラスRichJInternalFrame()を定義します。例:

class RichJInternalFrame(wrapped : JInternalFrame) {
   def showThis = {
     wrapped.show()
   }
}

これにより、JInternalFrameでshowを呼び出すだけの新しいメソッドshowThisが作成されます。これで、JInternalFrameでこのメソッドを呼び出すことができます。

val jif = new JInternalFrame()
println(jif.showThis);

Scalaは自動的にjifをRichJInternalFrameに変換し、このメソッドを呼び出すことができます。

于 2009-07-25T14:31:02.857 に答える
0

どのような種類のscala機能を使用しようとしていますか?それは答えを思い付くのに役立つかもしれません。つまり、Javaで、それを使って何をしようとしているのでしょうか。次に、Scalaでそれを行うためのより良い方法を考え出すか、クラスのラッパーを作成して、あなたがやろうとしていることをさらに簡単にすることができます。

于 2009-07-18T06:39:40.460 に答える
0

すべての Java ライブラリを scala コードに直接インポートできます。

scala チュートリアルのセクション「Java との相互作用」を試してください。

Java のスカラ

于 2009-07-17T04:48:13.297 に答える
0

scala.swingソースを参照として使用できる場合があります。たとえばhttp://lampsvn.epfl.ch/svn-repos/scala/scala/trunk/src/swing/scala/swing/Button.scala

于 2009-07-17T09:36:20.190 に答える