如果这里已经有一个线程在处理这个问题,但我似乎找不到一个线程来处理我的特定任务,请原谅我。
我是Java的新手,在我生命中的各个阶段只使用过BASIC和Z80汇编进行过编码。我慢慢地掌握了窍门,但作为我正在学习的课程的一部分,我正在努力完成一项任务。
我需要创建一些基本的图形,一个圆,一个正方形等等,然后我需要将它们作为对象存储在链表中。我已经成功地绘制了对象并将其存储在链接列表中,但我不知道如何创建一个方法,然后将存储在列表中的内容绘制在JFrame中。
这是我的代码:公共类Shape扩展JFrame{
public void paint(Graphics g){
LinkedList<Object> ll = new LinkedList<Object>();
setSize(800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Circle c = new Circle();
c.setHeight(100);
c.setWidth(100);
c.setXpos(100);
c.setYpos(250);
ll.add(c);
Square s = new Square();
s.setHeight(100);
s.setWidth(100);
s.setXpos(300);
s.setYpos(250);
ll.add(s);
Bar b = new Bar();
b.setHeight(100);
b.setWidth(200);
b.setXpos(500);
b.setYpos(250);
ll.add(b);
}
以及圆类中的代码示例(这与正方形等几乎相同)
public class Circle {
private int xpos;
private int ypos;
private int width;
private int height;
public void paint(Graphics g) {
g.setColor(Color.RED);
g.fillOval(xpos, ypos, width, height);
}
public void setXpos(int xpos) {
this.xpos = xpos;
}
public void setYpos(int ypos) {
this.ypos = ypos;
}
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
基本上,我对如何将LinkedList中包含的内容获取到JFrame有一个完全的心理障碍。
非常感谢您的帮助!
您的绘制方法没有完成它应该做的事情:在Graphics实例上绘制对象。相反,您只是将对象添加到列表中。最有可能的是,这些对象应该在其他时间包含在列表中,甚至可能包含在构造函数中。此外,如果您希望Circle、Bar等对象采用通用方式,则应使它们的类继承自某个通用接口。例如:
interface Painter {
public void paint(Graphics g);
}
然后:
public class Shape extends Painter {...}
在这种情况下,您可以有一个List类型的类成员,其内容现在添加到本地变量ll中。
然后,您的绘制方法可以是以下内容:
public void paint(Graphics g){
super.paint(g);
for (Painter p : painters) {
p.paint(g);
}
};
希望这能有所帮助。