首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JPanel中滚动JFrame

在JPanel中滚动JFrame
EN

Stack Overflow用户
提问于 2019-10-31 04:02:40
回答 1查看 23关注 0票数 0

我使用this example to draw polygons作为基础来制作我自己的多边形抽屉,但保留了最重要的部分:

代码语言:javascript
复制
public class Main extends JPanel {

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // polygon maker
}

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setTitle("DrawPoly");
    frame.setSize(1000, 1000);
    frame.setLocationRelativeTo(null);
    frame.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
    Container contentPane = frame.getContentPane();
    contentPane.add(new Main());
    frame.show();
}
}

我发现,如果多边形的坐标值为负值,它们就会从屏幕上消失,我无法完整地看到它们。为此,我想像一下在main中创建的JFrame,或者内容窗格的某种滚动或缩放。如何使用链接的代码作为基础来实现一个简单的滚动?

EN

回答 1

Stack Overflow用户

发布于 2019-10-31 05:01:35

我发现,如果多边形的坐标值为负值,它们就会从屏幕上消失

您不能使用具有负值的JScrollPane。

相反,您需要:

创建要绘制的所有多边形,并通过ArrayList.

  • Iterate将它们添加到ArrayList中以找到所有多边形的最大负x/y值。如果找到负的"x“或"y”坐标,则再次迭代

  • ,并根据x或y坐标的绝对值调用translate(...)方法,以将面板上的所有多边形移动到它们都将被ArrayList迭代并绘制每个多边形。

请注意。理想情况下,您应该创建多边形,然后在paintComponent()方法外部添加然后执行ArrayList。然后进行翻译。因此,现在paintComponent()方法只需要迭代ArrayList并绘制它们,而不需要在每次组件需要重新绘制自己时进行创建/转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58632842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档