Я хочу построить виджет, который будет способен скользить по вертикали (вверх и вниз) и по горизонтали (влево и вправо). Конечно, пользователь установит стили этого виджета.
Проблема в том, что когда я тестирую виджет с горизонтальным скольжением в правильном направлении, текст оставляет позади какой-то нарисованный след. С помощью этого метода я рисую текст:
private void paintText ( )
{
if ( getText ( ) != null )
{
Point point = gc.stringExtent ( getText ( ) );
if ( isHorizontalSlide )
{
if ( getMode ( ) == LEFT_MODE )
{
if ( pX + point.x + 1 == rectangle.x )
pX = rectangle.width;
gc.drawText ( getText ( ) , pX -- , pY );
}
else if ( getMode ( ) == RIGHT_MODE )
{
if ( pX == rectangle.width )
pX = rectangle.x - point.x + 1;
gc.drawText ( getText ( ) , pX ++ , pY );
}
else
{
if ( pX + point.x + 1 == rectangle.x )
pX = rectangle.width;
gc.drawText ( getText ( ) , pX -- , pY );
}
}
else if ( isVerticalSlide )
{
if ( getMode ( ) == UP_MODE )
{
if ( pY + point.y + 1 == rectangle.y )
pY = rectangle.height;
gc.drawText ( getText ( ) , pX , pY -- );
}
else if ( getMode ( ) == DOWN_MODE )
{
if ( pY == rectangle.height )
pY = rectangle.y - point.y + 1;
gc.drawText ( getText ( ) , pX , pY ++ );
}
else
{
if ( pY + point.y + 1 == rectangle.y )
pY = rectangle.height;
gc.drawText ( getText ( ) , pX , pY -- );
}
}
}
else
throw new NullPointerException ( "The text cannot be null!" );
}
Может кто-нибудь сказать мне, в чем проблема с трассировкой?