問題タブ [scala-swing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala IDE で Gradle 経由で scala swing 依存関係を追加できない
Scala初心者です。私は Windows 8.1 を使用しており、Scala IDE 4.0.0とGradleとscalaおよびeclipseプラグインを使用してプロジェクトを作成しています。このプロジェクトでは、 scala.swingおよびjavax.mediaパッケージを使用したいと考えています。両方のライブラリを依存関係として build.gradle に追加しましたが、javax.media のみが機能します。
私が行った手順は次のとおりです。
次のようにフォルダとファイルを作成します
以下に示すように、 は Gradle ビルド スクリプトで、 は Scala スクリプトです
build.gradle
。Foo.scala
<<build.gradle>>
/li><<Foo.scala>>
コマンドラインを使用して、に移動し
foo
て実行しますgradle eclipse
- Scala IDE で、
import -> General -> Existing Projects into Workspace -> Browse -> Foo
次に、Foo.scala の 2 行目でエラーが発生しますobject swing is not a member of package scala
。Referenced Libraries
下の図に示すように、左側のパネルのリストには のみjmf-2.1.1e.jar
がjavax.media
表示されます。
<<.classpath>>
Eclipse のビルド パスを構成して手動で追加しようとしましscala-swing.jar
たが、問題なく動作しますが、Gradle ビルド スクリプトを実行するたびにこれを行う必要があります。scala-swing-something.jar
Gradle によってインポートされなかった理由とその修正方法を提案してください。
これは、実行後のログ メッセージです$ gradle dependencies
。
multithreading - コンテンツを変更しようとすると Scala スイング パネルが消える (スレッド実行時のみ)
だから私は学校のプロジェクトとしてボイド シミュレーション プログラムを書いています。私のプログラムは、他のグループと群がらないこれらのボイドの複数の異なるグループをサポートしています。それらはすべて、新しい部族が作成されたときにプログラムのメイン GUI に BoxPanel を追加することによって行う異なる設定を持ち、それらの BoxPanel には設定があります。グループ設定で新しいフレームを開くボタン。
これは、プログラムを起動して、コード内に事前定義された部族をすべて追加すると、完全に機能します。ここで、GUI の新しい部分を作成して、これらの Boid の新しいグループを作成し、シミュレーションの実行中にそれらを追加できるようにしました。ここで問題が発生します。
何らかの奇妙な理由で、適切な設定でシミュレーションにグループを正常に追加しますが、BoxPanels をメイン GUI に追加しません。シミュレーションの横にある設定バー全体が完全に消えます。私はこれをテストし、計算スレッドの先頭に部族を追加すると同じことを行うので、これは複数のスレッドとスイングの問題のようです。これを引き起こしているもの、またはこれを修正する方法はありますか? 私はこれに完全に困惑しています。
tl;dr: トライブを追加するための以下のコードは、スレッドを開始していないときは正常に機能しますが、スレッドの開始後に使用しようとすると、optionPanel が空に見えます。
メイン GUI に BoxPanels を追加するコードは次のとおりです。
ああ、内容のサイズを印刷して本当に必要な内容を追加するかどうかをテストしましたが、すべてがうまく一致しますが、描画されません。
編集:いくつか掘り下げた後、実際にはスレッドからスイングを更新することのようです。多くの場所で SwingWorker の使用が提案されていますが、私が収集した情報から、それは継続的なシミュレーションであり、フレームごとに新しい SwingWorker を作成し続ける必要があるため、私のプログラムには適合しないと思います。
EDIT2:次のようにスレッドからメソッドを呼び出してみました:
違いはありませんでした。これは、TribeBoxPanel と TribeSettingFrame の使い方に問題があると思い始めています。これらは、必要な BoxPanel または Frame を返すメソッドを 1 つだけ含むオブジェクトです。この実装は悪いですか?もしそうなら、動的な BoxPanels と Frames を作成するより良い方法は何ですか?
scala - スカラ; タイプ (X) の式 =>X はタイプ SupX に準拠していません
私は scala-swing で遊ぶ scala 初心者です。scala.swing.Point
そして、与えられたを翻訳したいscala.swing.event.MousEvent
:
図形の選択を処理するクラスにマウス イベントを送信したいと考えています。しかし、シェイプにはコンテナー (シート) に対する相対位置がありますが、MouseEvent.point はウィンドウに対する相対位置であるため、前にそれを変換/相対化する必要があります。
だから、私はsSelection
を受け取るクラスを持っていますMouseEvent
:
そして、Sheet
誰がシェイプ コンテナを持っているか (そして、ポイントを変換する方法を知っています)。
私は醜いキャストでこの問題を回避することができます:
しかし、私は別のより奇妙なコンパイラの問題を抱えています:
エラー:(32, 21) クラス MousePressed のメソッド copy の引数がありません。部分的に適用された関数として扱いたい場合は、このメソッドの後に `_' を付けます
Pressed.copy(point = relativize(pressed.point)).asInstanceOf[MousePressed]
そしてここで、私は道に迷っており、この簡単な変換を行うためにあなたの助けが必要です.
もちろん、すべてのメソッドはscala.swing._
型を使用します (そして、scala.swing. and
java.awt. ` の間で混合することはありません) 。
どうもありがとう
scala - scala-swing の ReactiveX は機能しませんか?
私はreactivexの初心者で、scala-swingで使用しようとしています。
私のコードは非常に単純ですが、動作しません:
依存関係は次のとおりです。
奇妙なことに、コンソールには何も表示されません!
私のコードに何か問題がありますか?
PS: ライブ プロジェクトはこちらhttps://github.com/freewind/scala-swing-demo/blob/fc79c5b65e6fecc21d3894888d336d8f5204f62e/src/main/scala/scalaswing/HelloReactiveX.scala
scala-swing - スイング ウィンドウの位置を動的に変更できない
scala-swing ウィンドウの位置を変更したい。初期化時に場所の設定が正しく機能することがわかりましたが、場所を動的に変更することはできません
どうすればいいですか?