【发布时间】:2013-12-04 08:18:44
【问题描述】:
如果这里已经有一个线程处理这个问题,请原谅我,但我似乎找不到一个处理我的特定任务的线程。
我是 Java 新手,在我生命中的不同阶段只使用 BASIC 和 Z80 汇编进行过编码。我正在慢慢掌握它,但我正在努力完成我正在学习的课程中的一项任务。
我需要创建一些基本的Graphics,圆形,正方形等等,然后我需要将它们作为对象存储在一个链表中。我已经设法轻松地绘制对象并将它们存储在链接列表中,但我无法弄清楚如何创建一个方法,然后将存储在列表中的内容并将它们绘制在 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);
}
以及 Circle 类中的代码示例(正方形等几乎相同)
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 有一个完全的心理障碍。
非常感谢任何帮助!
【问题讨论】:
-
paint不是更改框架或组件状态或构建您要执行的各种其他元素的地方,而是应该在调用paint和 @987654327 之前设置这些元素@ 应该简单地呈现这个状态。您还应该避免覆盖paint,而是创建一个自定义类,从JPanel之类的东西扩展并覆盖它的paintComponent方法。更多详情请关注Performing Custom Painting -
This example 在概念上是相似的,因为它有一个
List或Shapes 来绘制,它从List绘制它们(列表单独更新)