Java 使用自己的图形对象为我的JPanel类提供动态可运行性?
好吧,听我说完。我目前的课程与下面的类似:Java 使用自己的图形对象为我的JPanel类提供动态可运行性?,java,swing,runnable,Java,Swing,Runnable,好吧,听我说完。我目前的课程与下面的类似: public class GraphicsPanel extends JPanel { public void paint(Graphics g) { super.paintComponents(g); g.setColor(Color.RED); g.fillRect(100, 100, 100, 100); } } 但很明显,这不是很有用,因为它唯一能做的就是生成一个fillRect。现
public class GraphicsPanel extends JPanel {
public void paint(Graphics g) {
super.paintComponents(g);
g.setColor(Color.RED);
g.fillRect(100, 100, 100, 100);
}
}
但很明显,这不是很有用,因为它唯一能做的就是生成一个fillRect
。现在我想做的是让父JFrame能够将自定义指令传递给它的一个窗格,这样GraphicsPanel
的每个实例都可以做一些不同的事情。我希望能够继续将指令作为可运行项添加到对象中。我有一个总体设计:
public class GraphicsPanel extends JPanel {
private static final long serialVersionUID = 5890041512607678296L;
private java.util.List<Runnable> graphics = new ArrayList<Runnable>();
public void paint(Graphics g) {
super.paintComponents(g);
for (Runnable r: graphics) {
r.run();
}
}
public void addGraphics(Runnable r) {
graphics.add(r);
}
public void clearGraphics() {
graphics.clear();
}
}
正如您所看到的,我真正想要的是能够为GraphicsPanel提供动态指令。然而,问题是:当我在父JFrame中创建Runnable时,由于明显的原因,我无法使用JPanel的graphics对象给出指令,因为我无法访问JFrame范围内的本地graphics参数g
我很确定我想要做的是一件相当简单的事情,但似乎没有明显的途径。如果你有一个建议,涉及到放弃我目前的设计为更简单的东西,请分享它。我有时倾向于重新发明轮子,也许我完全错了。谢谢
我目前的课程与下面的类似:
public class GraphicsPanel extends JPanel {
public void paint(Graphics g) {
super.paintComponents(g);
g.setColor(Color.RED);
g.fillRect(100, 100, 100, 100);
}
}
这不是你做定制绘画的方式
你应该:
paintComponent(…)
-而不是paint()super.paintComponent(…)
-而不是super.paintComponent()在本例中,由于要绘制不同的对象,因此需要将
Shape
对象添加到ArrayList中。<代码>形状>代码>接口支持弧、矩形、椭圆等.< /p>而不是可运行的,创建一个自己的接口,它使用一种方法来接受图形,或者只使用<代码>用户<代码>(也考虑CAMKICR答案),而不是试图访问<代码>图形<代码>上下文,而是通过“命令”。对于它可以用来生成结果的组件,我将从查看Shape
sapi开始寻找灵感