-1

グリッドを備えた無限の座標ボードのクラスを設計しようとしています。aを延長し、JViewport初期位置ok(内側JScrollPane)で描画します。どの方向にもスクロールできるスペースがあることをスクロールペインに伝えるにはどうすればよいですか?

以下は役に立ちません

            JCoordinateViewport coordinate = new JCoordinateViewport();
            coordinate.setBackground(Color.WHITE);
            //coordinate.setPreferredSize(new Dimension(10000, 10000));

            JScrollPane scroll = new JScrollPane();
            //scroll.setViewportView(coordinate);
            scroll.setViewport(coordinate);
            scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
            scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
            scroll.getVerticalScrollBar().setMinimum(-10000);
            scroll.getVerticalScrollBar().setMaximum(+10000);
            scroll.getHorizontalScrollBar().setMinimum(-10000);
            scroll.getHorizontalScrollBar().setMaximum(+10000);

アップデート

JScrollPaneがビューポートからスクロール範囲を決定する方法を知っている人はいますか?

UPDATE2

呼び出し後に最大値と最小値を設定すると、スクロールバーが機能しないように見えることがわかりましたsetVisible

しかし、残念ながら、paintConponentスクロール時に呼び出されません。

なんで?

UPDATE3

スクロールバーは機能しますが、ビューポートの位置は変更されません。

なんで?

4

2 に答える 2

2
CoordinateViewport coordinate = new JCoordinateViewport(); coordinate.setBackground(Color.WHITE); //coordinate.setPreferredSize(new Dimension(10000, 10000));

JScrollPane scroll = new JScrollPane(); //scroll.setViewportView(coordinate);
scroll.setViewport(coordinate); 
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 
scroll.getVerticalScrollBar().setMinimum(-10000); 
scroll.getVerticalScrollBar().setMaximum(+10000); 
scroll.getHorizontalScrollBar().setMinimum(-10000); 
scroll.getHorizontalScrollBar().setMaximum(+10000);

.

以下は役に立たない

  • 問題は名前のクラスにのみある必要がありますCoordinateViewport

  • より良いヘルプのために、SSCCE、短く、実行可能で、コンパイル可能で、ほぼJFrameJScrollPaneおよびJViewport

  • でのちらつきを軽減するJViewportために設定する必要があります。

    1. 自分のRepaintManager

    2. および組み込みメソッドを使用することによってJViewport

    JViewport.setScrollMode(JViewport.BLIT_SCROLL_MODE); JViewport.setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE); JViewport.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

  • Passing current Date and JTable how to change BackGround Color as潜在的なSSCCEのソースを参照してください

于 2013-02-21T21:59:42.517 に答える
2

ここに示すように、 でのペイントJViewportはビューポートに「くっついている」ように見えますが、下にあるスクロール可能なコンポーネントでのペイントはその下にスライドします。サイズは の整数倍ですTILE。デモンストレーションの目的で、ビューポートの推奨サイズは下にあるパネルよりも小さくなっています。実際には、オーバーライドすることをお勧めしますgetPreferredSize()。も参照してください ScrollAction。これは、マウスが境界線の近くにあると自動スクロールします。

画像

于 2013-02-22T02:53:40.577 に答える