問題タブ [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.

0 投票する
2 に答える
1201 参照

scala - Scala IDE で Gradle 経由で scala swing 依存関係を追加できない

Scala初心者です。私は Windows 8.1 を使用しており、Scala IDE 4.0.0Gradlescalaおよびeclipseプラグインを使用してプロジェクトを作成しています。このプロジェクトでは、 scala.swingおよびjavax.mediaパッケージを使用したいと考えています。両方のライブラリを依存関係として build.gradle に追加しましたが、javax.media のみが機能します。

私が行った手順は次のとおりです。

  1. 次のようにフォルダとファイルを作成します

    以下に示すように、 は Gradle ビルド スクリプトで、 は Scala スクリプトですbuild.gradleFoo.scala

    <<build.gradle>>

    <<Foo.scala>>

    /li>
  2. コマンドラインを使用して、に移動しfooて実行しますgradle eclipse

  3. Scala IDE で、import -> General -> Existing Projects into Workspace -> Browse -> Foo

次に、Foo.scala の 2 行目でエラーが発生しますobject swing is not a member of package scalaReferenced Libraries下の図に示すように、左側のパネルのリストには のみjmf-2.1.1e.jarjavax.media表示されます。

オブジェクト swing はパッケージ scala のメンバーではありません

<<.classpath>>

Eclipse のビルド パスを構成して手動で追加しようとしましscala-swing.jarたが、問題なく動作しますが、Gradle ビルド スクリプトを実行するたびにこれを行う必要があります。scala-swing-something.jarGradle によってインポートされなかった理由とその修正方法を提案してください。


これは、実行後のログ メッセージです$ gradle dependencies

0 投票する
2 に答える
136 参照

multithreading - コンテンツを変更しようとすると Scala スイング パネルが消える (スレッド実行時のみ)

だから私は学校のプロジェクトとしてボイド シミュレーション プログラムを書いています。私のプログラムは、他のグループと群がらないこれらのボイドの複数の異なるグループをサポートしています。それらはすべて、新しい部族が作成されたときにプログラムのメイン GUI に BoxPanel を追加することによって行う異なる設定を持ち、それらの BoxPanel には設定があります。グループ設定で新しいフレームを開くボタン。

これは、プログラムを起動して、コード内に事前定義された部族をすべて追加すると、完全に機能します。ここで、GUI の新しい部分を作成して、これらの Boid の新しいグループを作成し、シミュレーションの実行中にそれらを追加できるようにしました。ここで問題が発生します。

何らかの奇妙な理由で、適切な設定でシミュレーションにグループを正常に追加しますが、BoxPanels をメイン GUI に追加しません。シミュレーションの横にある設定バー全体が完全に消えます。私はこれをテストし、計算スレッドの先頭に部族を追加すると同じことを行うので、これは複数のスレッドとスイングの問題のようです。これを引き起こしているもの、またはこれを修正する方法はありますか? 私はこれに完全に困惑しています。

tl;dr: トライブを追加するための以下のコードは、スレッドを開始していないときは正常に機能しますが、スレッドの開始後に使用しようとすると、optionPanel が空に見えます。

メイン GUI に BoxPanels を追加するコードは次のとおりです。

ああ、内容のサイズを印刷して本当に必要な内容を追加するかどうかをテストしましたが、すべてがうまく一致しますが、描画されません。

編集:いくつか掘り下げた後、実際にはスレッドからスイングを更新することのようです。多くの場所で SwingWorker の使用が提案されていますが、私が収集した情報から、それは継続的なシミュレーションであり、フレームごとに新しい SwingWorker を作成し続ける必要があるため、私のプログラムには適合しないと思います。

EDIT2:次のようにスレッドからメソッドを呼び出してみました:

違いはありませんでした。これは、TribeBoxPanel と TribeSettingFrame の使い方に問題があると思い始めています。これらは、必要な BoxPanel または Frame を返すメソッドを 1 つだけ含むオブジェクトです。この実装は悪いですか?もしそうなら、動的な BoxPanels と Frames を作成するより良い方法は何ですか?

0 投票する
1 に答える
198 参照

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. andjava.awt. ` の間で混合することはありません) 。

どうもありがとう

0 投票する
0 に答える
60 参照

scala - scala-swing の ReactiveX は機能しませんか?

私はreactivexの初心者で、scala-swingで使用しようとしています。

私のコードは非常に単純ですが、動作しません:

依存関係は次のとおりです。

奇妙なことに、コンソールには何も表示されません!

私のコードに何か問題がありますか?

PS: ライブ プロジェクトはこちらhttps://github.com/freewind/scala-swing-demo/blob/fc79c5b65e6fecc21d3894888d336d8f5204f62e/src/main/scala/scalaswing/HelloReactiveX.scala

0 投票する
1 に答える
48 参照

scala-swing - スイング ウィンドウの位置を動的に変更できない

scala-swing ウィンドウの位置を変更したい。初期化時に場所の設定が正しく機能することがわかりましたが、場所を動的に変更することはできません

どうすればいいですか?