問題タブ [jviewport]
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.
java - JViewPorts の理解に問題がある
私は JViewports を理解しようとしていて、それを使って作業しようとしました。私はこの紳士のクラスを使用してきました。これは JViewport クラスを拡張するだけです。
JPanel クラスを実装する 6480*4860 オブジェクトの真ん中にビューポートを設定したい場合、デバッグ時に使用している JPanel を実装するクラスがビューに追加?さまざまなメソッドの呼び出しや、使用される座標とその意味の理解に完全に混乱していますか? そしてもう1つ:呼び出しますか
ビューポートのみを不透明に設定しますか、それともすべての子も設定しますか? ビューポートを適切に使用する方法を理解すれば、これに対する答えはすぐにわかると思います。
これが私が使用しようとしているクラスです。この短い質問にはかなり多くのスペースが必要ですが、書式設定されたテキストは、プレーン テキストよりも喜ばれるはずです。しかし、私が間違っていなければ、問題はここから来るはずはありません。
私はあなたにsscceを与えることができますが、これは十分に単純であるべきだと思います.
java - 遅延テーブルのスクロールバー
初めてなので間違っていたら教えてください!
したがって、テーブルはメッセージを受信するためのものであるため、最終的に数十万行になるツリーテーブル(aephyrのニーズに合わせて修正されたバージョン- http://code.google.com/p/aephyr/ )があります。 、それは決して終わることができませんでした。そのため、情報をディスクに保持し、ユーザーが見たいときにのみロードする必要がありました。テーブルのルートに最大 100 の子を保持し、テーブルの最初または最後にある 2 つの特別なノードをクリックして、いくつかのノードを上下にロードします。明らかに、これはユーザーフレンドリーではなく、ノード 10 にいて、たとえば 2000 にスクロールしたい場合は面倒です。
使いやすくするために、スクロールバーが必要です。スクロールバーの位置から、どのノードをロードする必要があるかがわかります。問題は、私のテーブルの JScrollPane のデフォルトのスクロールバーが、getRowCount() に対して何を返しても、ノードが 100 しかないように見えることです。別の JScrollBar を作成して、必要な場所にスクロールさせましたが、テーブルにもスクロール ペインにもバインドされていないため、ビューポートのスクロールにもマウス ホイールにも反応しません。
それよりも、私の質問は次のとおりです。元の JScrollPane のスクロールバーを私が望むように見せる方法について誰もが考えているので、テーブル、ビューポート、およびスクロールバーで発生する可能性のあるすべてのイベントに応答するために車輪を再発明する必要はありませんか??
必要に応じて、サンプル コードを作成してみることもできますが、それには時間がかかります。現在はありません =\
事前にサンクス!
[編集]
私の問題でサンプルコードを作成しました...あまり良くありませんが、私の問題が何であるかを理解するには十分だと思います... 私はEclipseでAephyrプロジェクトを持っていて、それに新しい「LazyTableTest」パッケージを作成しました。 .. パッケージのソース コードは、この zip ファイルにあります: https://docs.google.com/file/d/0B4Ti8_BMZvD2b2dtY05GWkxFVGs/edit?usp=sharingt
DemoTable を実行します。2000 エントリのファイルが作成され、それらがテーブルに表示されます (ファイル作成の初期化はやや遅いです...)。フレームには 2 つのスクロールバーが含まれています。ノブを直接動かすと、期待どおりに動作します (+いくつかのバグ)。アクションがホイールまたはビューポートから来るとき、何も起こりません-私はそのために何も設定しませんでした、そして前に言ったように、これでホイールを再発明したくありません...だから、スクロールでVerticalScrollBarを設定しようとしますバーですが、機能しなくなりました (DemoTable.java の 528 行目のコメントを外します)。
アイデア?!
java - JComponent とそのすべての子を別のコンポーネントにペイントすることは可能ですか?
という拡張JPanel
クラスがありGridPanel
ます。から画像をドラッグ アンド ドロップできますJList
。では、GridPanel
マウスで画像をドラッグして、必要に応じて並べ替えることができます。私が興味を持っているのは、GridPanel
コンポーネントのサムネイル ビューを作成することです。
私の理解が正しければ、JScrollPane
のビューを に設定GridPanel
すると、 のGridPanel
子JViewPort
になり、 の子になりJScrollPane
ます。現在GridPanel
、すでに のビューになるように設定されており、2 つの親を持つことはできないとJScrollPane
確信しています。GridPanel
したがって、2 つのコンポーネントで同じビューを共有することはできませんが、縮小された のビジュアル コピーをペイントするために必要なのはサムネイル ビューだけですGridPanel
。
これは私の質問につながります。GridPanel
どのペイントをコピーして、完全に別のコンポーネントにペイントすることはできますか?
これは、理解されていない場合に備えて、私が試したことの例です。
私が望んでいるのは、両方のコンポーネントが同じ色のセットを表示することです。JLabels
それらを複製することはありませんJLabels
。
java - JScrollPane は自動的に ViewPort の位置を (0,0) に設定します
ビューポートがJScrollPane
のサブクラスである がありJPanel
ます。このパネルは でレイアウトされてBoxLayout
おり、ユーザーの操作により、コンポーネントの水平幅が変更される場合があります。スクロール バーが必要なほど十分な数のコンポーネントがある場合、コンポーネントの水平サイズを変更してからサブクラス (ビューポート ビュー) を呼び出すとrevalidate()
、JPanel
常にスクロール ペインが (0,0) にリセットされます。
現在のビューを保持したいので、コンポーネント リスナーを設定しcomponentMoved()
、値を格納しますgetLocation()
(これはすべて JPanel サブクラスまたはビューポート ビューにあります)。revalidate()
呼び出した直後にsetLocation()
、保存された場所を使用して呼び出します (イベント ディスパッチ スレッド上)。ただし、ビューの位置が (0,0) に設定されていると、すぐに保存された場所にジャンプします。JScrollPane
(0,0) に戻るのを止める方法はありますか? ビューポート ビューのサイズが変更されたことを伝えるより良い方法はありますか?
をサブクラス化し、オーバーライドしてブレークポイントを配置することで、(0,0)
がどこから来ているかを把握しようとしましたが、そこにはヒットしていません (ただし、スクロール ホイールを動かしたときです)。何が起こっているのか知っている人はいますか?JScrollBar
setValue()
java - JScrollPaneのJTable、背景を設定するには?
JScrollPane
をラップするために を使用していJTable
ます。構成によっては、テーブルが占有しないスペースがあります。灰色で描かれています (透明に見え、背面にコンポーネントが見えるだけです)。この領域を特定の色に設定するにはどうすればよいですか?
説明する SSCCE を次に示します。
そして、ここに「色付け」したい領域が表示されます。SSCCE では、テーブルとスクロール ペインを使用してそれを実行しようとしましたが、成功しませんでしsetOpaque(boolean)
た。setBackgroundColor(Color)
私が間違っていることを教えてもらえますか?
java - Java ソースコードを使用したデバッグ
Java ソース コード全体を Eclipse プロジェクトに含めて、プログラムのデバッグを容易にする方法はありますか (たとえば、他の方法では何も挿入できないメソッドに println を挿入するなど)。
コードにバグがあります。しかし、コードのバグが発生する理由をよりよく理解するために、(バグが発生する) システム メソッドの中間結果がどのようなものかを知りたいと思います。
たとえば、JViewPort.scrollRectToVisible() の正確な動作と、メソッド自体で発生するいくつかの中間結果を出力することによって、入力がどのように動作するかを知りたいです。
編集:
JRE System Library X を使用する代わりに、自分でコードを書いたかのように JDK からソース コードを追加したいと考えています。自分で作成したクラスを編集できるのと同じように、システム クラスを編集できるようにしたいと考えています。圧縮された .jar ではなく、編集可能な .java ファイルが必要です...
java - 大きな画像上でビューポートを移動します。JLabel+JScrollPane
その中にJScrollPane m_jScrollPane
がJLabel m_jlImage
表示されています。これm_jlImage
は、ユーザーが画面上で最後にクリックした場所に赤い点が描かれたスクリーン キャプチャです。m_jScrollPane
の赤い点の上にあるの表示領域を移動 (スクロールを読む) したいのですがm_jlImage
。lastClick
はユーザーが最後にクリックした場所で、 と同じ座標にありm_jlImage
ます。
これは私が思っていたよりも難しいことが証明されています。
同じ軸に沿って画面全体の長さに対するクリック ポイントの値の比率を取得し、対応するスクロール バーをその最大値と同じ比率でスクロールすることにしました。これは、画面上で最後にクリックしたポイントが左上隅にある場合にのみ機能するようです。
クリックしたポイントが画面の端にある場合の対処方法がわかりません。このシナリオでは比率が生成され、スクロール バーが同じ比率でスクロールされますが、赤い点は画面の端にあるためスクロールされて見えなくなります。どうすればこれを克服できるかについての提案はありますか?