-1
我在我的x
和y
它们是其中i点击我的鼠标的坐标值加上使用队列。但是,当我尝试使用Iterator
访问值时出现错误。有人能帮助我吗?我如何以正确的方式做到这一点?另外,我不知道Timer
和Actionlistener
对我的代码有什么作用(它们是否需要或者我必须删除它?),所以稍加说明对我来说就非常有用。我希望你能帮我修复和改进这些代码。谢谢! :)如何正确使用Java中的迭代器从队列中获取价值?
public class Canvas extends JPanel implements MouseListener, ActionListener{
Timer time;
int numberOfPoints;
Queue<Integer> x = new LinkedList<Integer>();
Queue<Integer> y = new LinkedList<Integer>();
Iterator itX = x.iterator();
Iterator itY = y.iterator();
public Canvas(){
addMouseListener(this);
time = new Timer(1, this);
time.start();
numberOfPoints = 5;
}
public void paint (Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setBackground(Color.black);
g2d.drawString("Left: "+ numberOfPoints, 10, 20);
g2d.fillOval(220, 170, 30, 30);
g2d.setColor(Color.red);
while(itX.hasNext()){
Integer xx = (Integer) itX.next();
Integer yy = (Integer) itY.next();
g2d.fillOval(xx, yy, 30, 30);
}
}
public void mousePressed(MouseEvent e) {
if(numberOfPoints>0){
numberOfPoints--;
x.add(e.getX()-15);
y.add(e.getY()-15);
repaint();
}
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
@Override
public void actionPerformed(ActionEvent arg0) {
repaint();
}
}
总之,这里的的情况下,要运行它在我的主类。
public class ClikkPanikk extends JFrame{
public ClikkPanikk(){
short width = 500;
short height = 400;
add(new Canvas());
setTitle("ClikkPanikk");
setVisible(true);
setSize(width, height);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ClikkPanikk();
}
}
救了我。谢啦! :) –