2

SWT.Tracker を使用してサイズ変更できるコンポジットを作成しようとしています。ここにサンプル コードを示します。

        final Composite b = new Composite(parent, SWT.NONE);
        b.setBounds(20, 20, 80, 80);
        b.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_BLUE));
        b.addListener(SWT.MouseDown, new Listener() {
          public void handleEvent(Event e) {
            Tracker tracker = new Tracker(b.getParent(), SWT.RESIZE);
            tracker.setStippled(true);
            Rectangle rect = b.getBounds();
            tracker.setRectangles(new Rectangle[] { rect });
            if (tracker.open()) {
              Rectangle after = tracker.getRectangles()[0];
              b.setBounds(after);
            }
            tracker.dispose();
          }
        });

左から右にドラッグし始めると、カーソルがコンポジットの右端にジャンプします。上から下に向かってドラッグし始めると、カーソルがコンポジットの下端にジャンプします。クラスのドキュメントを調べましたが、この問題を解決するための設定が見つかりませんでした。誰かがポインターを持っていますか?

4

3 に答える 3

1

常に右下に向かって拡張したい場合は、トラッカーを作成する行を次のように変更します。

Tracker tracker = new Tracker(b.getParent(), SWT.RESIZE | SWT.RIGHT | SWT.DOWN);

SWT.UP、SWT.DOWN、SWT.LEFT、SWT.RIGHT を使用できます。

于 2013-10-24T16:06:32.730 に答える
1

AppWorks のソリューションはうまく機能します。シェルにリスナーを追加して、カーソルがコントロール境界から出るときにカーソルを設定し、カーソルが元の矢印を返すようにすることもお勧めします。

于 2015-09-23T15:00:24.607 に答える