gpt4 book ai didi

java - JPanel 网格问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:51 24 4
gpt4 key购买 nike

好的,我正在用 Java 实现流程图编辑器。我的目标是提供在绘图表面上显示网格线的可能性。我部分让它工作了:

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

// Scrolling
g2.transform(transformation);

// Step one: draw grid
if(showGrid)
{
// Horizontal grid lines
for(int i = -1; i < getSize().getWidth(); i += 50)
{
g2.drawLine(i, 0, i, (int)getSize().getHeight());
}
// Vertical grid lines
for(int i = -1; i < getSize().getHeight(); i += 50)
{
g2.drawLine(0, i, (int)getSize().getWidth(), i);
}
}

// Step two: draw symbols
// ...
}

结果是这样的:alt text

但是,如果我向下或向上滚动图表,我会得到: alt text

如图所示,图表是滚动的,但网格不是。我还尝试将第一步代码放在 g2.transform(transformation) 行之前,但在那之后,如果我滚动,网格线不会移动。

所以,问题是:有没有办法绘制网格线并避免上述行为?目标是滚动网格以及图表上的其他元素。

  1. 列表项

最佳答案

网格正在滚动,但线条没有延伸到新的边界。

网格与对象一起滚动。这就是为什么第二张图底部有空白的原因。网格的顶部已经滚出面板的顶部。网格底部已滚动到面板底部上方。网格线移动了。

我看到的唯一问题是网格线应始终延伸到可见区域的范围。为此,您需要反转 getWidth 和 getHeight 的转换,然后在这些值之间的所有 50 的倍数上绘制网格线。

关于java - JPanel 网格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4661620/

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