Создание компонента, менее чувствительного к Тому, чтобы притягивать Swing

Он получит следующий, но я предполагаю, что вы знаете, что при таком способе у вас будет блок «обработки», который будет пропущен, потому что вы откатили его прямо посередине. В любом случае, здесь ваш код изменен, чтобы показать вам, как он будет двигаться вперед:

CREATE TABLE #tmp(VAL1 varchar(10), VAL2 varchar(10), VAL3 varchar(10))
INSERT INTO #tmp VALUES('val1_1','val1_2','val1_3')
INSERT INTO #tmp VALUES('val2_1','val2_2','val2_3')
INSERT INTO #tmp VALUES('val3_1','val3_2','val3_3')
INSERT INTO #tmp VALUES('val4_1','val4_2','val4_3')
INSERT INTO #tmp VALUES('val5_1','val5_2','val5_3')
INSERT INTO #tmp VALUES('val6_1','val6_2','val6_3')
INSERT INTO #tmp VALUES('val7_1','val7_2','val7_3')


DECLARE @deadlockretries int = 0
declare @Maxlockretries int = 3

declare @var1 varchar(10)
declare @var2 varchar(10)
declare @var3 varchar(10)

DECLARE LPCursor cursor for SELECT VAL1, val2, val3 from #tmp
open LPCursor
while (@deadlockretries <= @Maxlockretries)
begin
    PRINT 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

  begin try
    begin transaction

      fetch next from LPCursor into @var1, @var2, @var3
      -- print @var1 + @var2 + @var3
      while (@@fetch_status = 0)
      begin
      print @var1 + @var2 + @var3
        /* most of the code here */
        select 1/0
        fetch next from LPCursor into @var1, @var2, @var3
    end 

    commit transaction
    SET @deadlockretries = @Maxlockretries
    close LPCursor
    deallocate LPCursor

  end try

  begin catch
  PRINT 'ERROR'
  print error_number()
    if (error_number() = 8134)
    begin

      if xact_state() <> 0 
      begin
      PRINT 'ROLLBACK'
        rollback transaction
      end
    end
  end catch
  PRINT 'END'
  SET @deadlockretries += 1
end

IF CURSOR_STATUS('global','LPCursor')>=-1
BEGIN
 DEALLOCATE LPCursor
END
5
задан Allain Lalonde 6 February 2009 в 21:27
поделиться

2 ответа

Я должен был сделать точно это прежде. Вот мой код обработки события от нажатия мыши, сокращенный только к битам, касающимся создания, перетаскивают, требуют нескольких пикселей прежде чем быть рассматриваемым как перетаскивание.

public void mousePressed(int mod, Point loc) {
    pressLocation=copyLocation(loc,pressLocation);
    dragLocation=null;
    }

public void mouseReleased(int mod, Point loc) {
    if(pressLocation!=null && dragLocation!=null) {
        // Mouse drag reverted to mouse click - not dragged far enough
        // action for click
        pressLocation=null;
        }
    else if(dragLocation!=null) {
        // action for drag completed
        }
    else {
        // do nothing
        }

    pressLocation=null;
    dragLocation=null;
    }

public void mouseDragged(int mod, Point loc) {
    if(pressLocation!=null) {                                                   // initial drag actions following mouse press
        dragLocation=pressLocation;                                             // consider dragging to be from start point
        if(Math.abs(loc.x-pressLocation.x)<dragMinimum && Math.abs(loc.y-pressLocation.y)<dragMinimum) {
            return;                                                             // not dragged far enough to count as drag (yet)
            }
        // action drag from press location
        pressLocation=null;
        }
    else {
        // action drag from last drag location
        dragLocation=copyLocation(loc,dragLocation);
        }
    }

И отметьте, у меня также были проблемы с Java генерирующиеся события щелчка некоторой JVM после перетаскивания, которое я должен был обнаружить и подавить.

3
ответ дан 14 December 2019 в 04:49
поделиться

Если я считал Ваш вопрос правильно, Вы отслеживаете и щелчок и mousedrag события. Можно ли отследить координаты на mousedown, сопровождаемый коротким вычислением в mousedrag, чтобы видеть, переместила ли мышь желаемые минимальные числа пикселей? Конечно, Вы затем также хотите отменить/сбросить на mouseup или когда мышь перетаскивается вне границ Вашего JComponent.

Протест: Я не сделал этого сам, но я думаю, что это - где я запустил бы, если бы это был я.

1
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: