2

写真のように問題があります

オーバーレイのスクロールバーの描画

私の追加手順は次のとおりです。

JFrame -> ビュー パネル -> JTabbedPane -> JPanel (マイ キャンバス)

paintComponent 内に図面を描画し、最後に revalidate() を呼び出します。助けていただければ幸いです。

編集:

paintComponent コード

public void paintComponent(Graphics g) {
    super.paintComponent(g);        
    Graphics2D g2d = (Graphics2D) g;

    //Obtain document size
    double width = model.getWidth();
            double height = model.getHeight();

    canvasBounds = new Rectangle2D.Double(0, 0, width, height);
    g2d.setColor(Color.WHITE);
    g2d.fill(canvasBounds);

    Dimension size = new Dimension();
    size.setSize(canvasBounds.getWidth() * zoomFactor, canvasBounds.getHeight() * zoomFactor);
    this.setPreferredSize(size);

    g2d.setClip(canvasBounds);
    List<DrawableShape> svgShapes = model.getDrawableShapes();
    for(DrawableShape shape : shapeList) {
        shape.draw(g2d);            
    }           
    revalidate();
}
4

3 に答える 3

1

私の問題は解決しました。私はcanvasBoundsのクリッピングをg2d.getClipBounds()と比較する必要がありました。私のcanvasBoundsクリップは、g2dで指定されたものよりもはるかに大きいため、スクロールバーに描画されました。

よろしくお願いします!

于 2012-05-17T01:55:26.837 に答える