1

処理と RCP を含むプロジェクトを行っています。これまでかなりの作業を行ってきましたが、RCP ウィンドウのサイズを変更すると (エッジをマウスでドラッグすると)、処理スケッチのサイズが自動的に変更されるようにしたいと考えています。

現在、多くの Web サイトで、処理でサイズ変更がサポートされていないと書かれており、frame.setResizable(true); を使用するように言われているものもあります。これは、関数内に配置するとエラーを返しますpublic void setup(){}

次のオプションは、サイズ変更リスナーを RCP ウィンドウに追加することですが、メインまたは createWindows 関数の内部でコードを実装すると、エラーのみが返されます。

誰か助けてくれませんか?

final Composite b = new Composite(shell, SWT.NONE);

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

2 に答える 2

2

これらのサイトは正しいです。処理は文字通りサイズ変更をサポートしていません。API にはありません。これを行う唯一の方法は、下位レベルのサブシステムにエスケープして非処理コードを使用することです (Java コンパイルの場合は Java JFrame のサイズ変更処理、JavaScript コンパイルの場合はキャンバス/ページのサイズ変更処理)。当然のことながら、そうするということは、コードがもはや処理されていないことを意味し、コードが実行されることを保証しながら処理コードを実行できる環境間で移植することはできません (JS は Java が何であるかを知りません。たとえば、Java コンパイルは JS 構文で壊れます)。 )。

処理size機能は、すべてを完全に破壊することなく 2 回目に設定することのできないあらゆる種類の管理変数を設定します。また、利用できる個別のresize機能はありません。さらに面白いのは、openGL/webGL のサイズ変更が不可能であるため、3D モードではそれができないことです (すべての GL バッファーは固定サイズであり、サイズ変更には幅/高さの変更のピクセルごとに再構築が必要になります)。

したがって、サイズを変更できるようにしたい場合は、古いスケッチの状態でインスタンス化された新しいスケッチを作成して、新しいスケッチ インスタンスで中断したところから再開できるようにする代わりに、何か巧妙なことを行います。

于 2013-06-13T14:01:24.957 に答える
0

これを試してみると、いくつかのバグがありますが、OpenGL で動作するように見えますが、同様に機能します... 見てください: もちろん、幅/高さに対してサイズ変更可能なものを作成する必要があります...

void setup()
{
  size(200, 200);   // always first line
  frame.setResizable(true);
  background(255);
  smooth();
}


void draw()
{
  background(255);
  ellipse(width/2, height/2, width/6, height/6);
}
于 2013-06-13T21:01:00.790 に答える