java抽象arraylist

时间:2011-08-10 06:40:48

标签: java user-interface arraylist paint

如果我在java中使用drawString(String,Int,Int)命令。如何存储/调用存储在ArrayList中的不同图形?

所以,例如,

ArrayList<what type will this be???> list = new ArrayList;
int pos = 0;
for (int i = 0; i < list.size(); i++) {
    g.get(i).drawString("hello", 50, 50 + pos);
    pos += 20;
}

3 个答案:

答案 0 :(得分:0)

你的意思是:

list.get(i).drawString("hello", 50, 50 + pos);

如果要在ArrayList<T>中存储不同的对象/形状,则T必须是定义drawString()的超类。否则此代码将无法编译。

答案 1 :(得分:0)

我用这个程序:

ArrayList<String[]> StringsToDraw = new ArrayList<String[]>(); 

StringsToDraw.add(new String[] {"Hello","20","35"}); 
StringsToDraw.add(new String[] {"World","100","100"}); 

@Override 
public void paint(Graphics g){
  for(String[] printMe : StringsToDraw){ 
    drawString(g, printMe[0], printMe[1], printMe[2]) 
  } 
} 

public void drawString(Graphics gr, String text, String xString, String yString){ 
    int x = Integer.parseInt(xString); 
    int y = Integer.parseInt(yString); 
    gr.drawString(text, x, y); 
}

答案 2 :(得分:0)

这样做有什么问题?

    List<Graphics2D> list = new ArrayList<Graphics2D>();
    int pos = 0;
    for (Graphics2D g : list) {
        g.drawString("hello", 50, 50 + pos);
        pos += 20;
    }

您可以更好地使用 for-each 并使用列表接口定义列表对象。