有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案