actionPerformed中的java重绘未调用paintComponent
public void whilePlaying()
{
tm.start();
System.out.println( "Game started!" );
while ( true )
{
String message = input.nextLine();
System.out.println( message );
if ( message.substring( 0, 1 ).equals( "x" ) )
{
double work = Double.parseDouble( message.substring( 1 ) );
avatar2.setX( work );
}
if ( message.substring( 0, 1 ).equals( "y" ) )
{
double work = Double.parseDouble( message.substring( 1 ) );
avatar2.setY( work );
}
}
}
public void paintComponent( Graphics g )
{
super.paintComponent( g );
doDrawing( g );
System.out.println( "doing drawing" );
Toolkit.getDefaultToolkit().sync();
}
private void doDrawing( Graphics g )
{
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage( avatar.getImage(), (int)avatar.getX(), (int)avatar.getY(), this );
g2d.drawImage( avatar2.getImage(), (int)avatar2.getX(), (int)avatar2.getY(), this );
}
private class TAdapter extends KeyAdapter
{
@Override
public void keyPressed( KeyEvent e )
{
avatar.keyPressed( e );
}
@Override
public void keyReleased( KeyEvent e )
{
avatar.keyReleased( e );
}
}
@Override
public void actionPerformed( ActionEvent e )
{
SwingUtilities.invokeLater( new Runnable()
{
public void run()
{
output.println( "x" + avatar.getX() );
output.println( "y" + avatar.getY() );
avatar.move();
System.out.println( "repainting" );
System.out.println( "repainted" );
repaint();
}
} );
}
}
我有一个服务器可以接受其中两个客户端。当我移除whilePlaying中的while循环时,重新绘制就可以了。然而,我需要while循环来接收来自服务器的信息。我运行代码,不断出现actionPerformed中的“重新绘制”和“重新绘制”,但paintComponent中的“正在绘制”从未出现
共 (0) 个答案