微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Java Swing中绘制,移动形状

如何解决在Java Swing中绘制,移动形状

我正在做一个有关在JPanel中绘制形状运动的项目,但是如果我对班级实施了mouselistener,如果我绘制了多个形状怎么办?在我的示例中,我绘制了两个矩形。 这是我的代码

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JPanel;

public class NewClass1 extends JFrame{
        JPanel panel2;
        
    public NewClass1(){
        JPanel container = new JPanel();
        container.setLayout(new BoxLayout(container,BoxLayout.X_AXIS));
         panel2 = new jPanel2();

        container.add(panel2);
        
        add(container);
        setSize(300,300);
        setDefaultCloSEOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new NewClass1();
    }
    
    class jPanel2 extends JPanel {

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

        g.drawRect(0,20,20);
        g.drawRect(21,21,20);
    }}
}

解决方法

java.awt.Rectangle类可用于容纳逻辑矩形。

我重新编写了您的代码,并进行了以下更改。

  1. 我通过调用SwingUtilities invokeLater方法启动了Swing应用程序。此方法可确保在Event Dispatch Thread上创建并执行Swing组件。

  2. 我创建了两个矩形并将其添加到List的{​​{1}}中。

  3. 必须按特定顺序调用Rectangles方法。这是我大多数Swing应用程序使用的顺序。

  4. 我给图形JFrame设置了首选尺寸,而不是JPanel。您想知道您的绘图区域有多大。 JFrame的大小与绘图无关。

这是代码。祝您的Swing编码好运。

JFrame

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。