我想创建一个Java面板,用于创建用户单击的对象。由于我的实际应用程序使用MVC方法,我也希望这些对象能够在模型更改时重新绘制自己,并提供更改其属性的菜单。
我认为控制x和y位置的最佳方法是采用基于画布的方法,从方法中JPanel调用这些对象的draw paintComponent方法。然而,这只会在画布上绘制形状,并且不会添加对象本身而失去控制对象属性的所有能力。如果有人能告诉我最适合自己想做的事情,我将非常感激。
我已经创建了一些示例代码,可以在下面看到。单击时,我希望圆圈改变颜色,这是使用MouseListener实现的(它基本上代表在这个小例子中更改模型属性)。此外,我还想确保放大/缩小仍然适用于任何示例代码/建议可以提供,所以我添加了按钮来放大和缩小对象作为快速测试。
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.geom.Ellipse2D;
public class Main {
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ExamplePanel panel = new ExamplePanel();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
});
}
//I could not get this to with when it extended JLayeredPane
private static class ExamplePanel extends JPanel {
private static final int maxX = 500;
private static final int maxY = 500;
private static double zoom = 1;
private static final Circle circle = new Circle(100, 100);
顺便说一句,我确实尝试使用JLayeredPane(有用,因为我也喜欢将我的对象分层),但无法让我的对象甚至渲染。我知道它没有默认的布局管理器所以尝试setBounds在构造函数中调用圆圈,但遗憾的是它没有用。我知道使用布局管理器更好,但似乎找不到适合我需求的布局管理器!
提前致谢。
幕布斯7119047
相关分类