gpt4 book ai didi

java - JScrollPane 中的 Jpanel,在滚动条上绘制

转载 作者:行者123 更新时间:2023-12-04 05:46:29 24 4
gpt4 key购买 nike

我有一个问题,如图所示

Drawing overlays scrollbars

我的添加过程如下:

JFrame -> View 面板 -> JTabbedPane -> JPanel(我的 Canvas )

我在paintComponent 中绘制我的绘图,并在最后调用revalidate()。帮助将不胜感激!

编辑:

油漆组件代码

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();
}

最佳答案

看起来有些东西没有遵守您的 clip 的界限.也许它正在shape.draw()中被改变方法?

为什么不尝试创建一个新的 Graphics 对象来传递给 shape.draw() , 而不是您的 setClip() .像这样的东西...

Graphics2D newG = (Graphics2D)g.create(0, 0, width, height);

然后将您的代码更改为此...
shape.draw(newG);

关于java - JScrollPane 中的 Jpanel,在滚动条上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com