如何解决在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
类可用于容纳逻辑矩形。
我重新编写了您的代码,并进行了以下更改。
-
我通过调用
SwingUtilities
invokeLater
方法启动了Swing应用程序。此方法可确保在Event Dispatch Thread上创建并执行Swing组件。 -
我创建了两个矩形并将其添加到
List
的{{1}}中。 -
必须按特定顺序调用
Rectangles
方法。这是我大多数Swing应用程序使用的顺序。 -
我给图形
JFrame
设置了首选尺寸,而不是JPanel
。您想知道您的绘图区域有多大。JFrame
的大小与绘图无关。
这是代码。祝您的Swing编码好运。
JFrame
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。