0

Eclipse ビューから与えられたデフォルトのコンテナーを考慮して、AWT フレームと SWT ラベルの向きを合わせたいと思います。SWT ラベルを一番上に、AWT フレームをそのすぐ下に配置します。何らかの理由で、SWT ラベルをフレームの外側に描画することができません。それらを別々にしたいのですが、RowLayout はコンポーネントを分離された行に配置していないようです。

SWT ラベルが AWT フレーム内に不適切に配置されている: ここに画像の説明を入力

プラグインのビュー内のコード:

public void createPartControl(Composite parent) {

    container = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
    RowLayout rowLayout = new RowLayout();
    //I have tried toggling many of the RowLayout properties but this has no effect on placing the label outside of the AWT Frame.
    container.setLayout(rowLayout);

    Label topLabel = new Label(container, SWT.NONE);
    topLabel.setText("MY NEW LABEL");

    frame = org.eclipse.swt.awt.SWT_AWT.new_Frame(container);
    frame.setFocusable(true);
    frame.setFocusableWindowState(true);
4

1 に答える 1

2

RowLayout コンポーネントを別々の行に配置することはなく、1つの行に配置します。SWT.VERTICAL行が左から右ではなく上から下になるように、スタイルで作成できます。ただし、スクリーンショットはまだ正しくありません。フレームを独自のコンポジットの唯一の子として持つと役立つ場合があります。

container = new Composite(parent, SWT.NONE);
RowLayout rowLayout = new RowLayout(SWT.VERTICAL);
container.setLayout(rowLayout);

Label topLabel = new Label(container, SWT.NONE);
topLabel.setText("MY NEW LABEL");

Composite frameContainer = new Composite(container, SWT.EMBEDDED | SWT.NO_BACKGROUND);
frame = org.eclipse.swt.awt.SWT_AWT.new_Frame(frameContainer);
frame.setFocusable(true);
frame.setFocusableWindowState(true);
于 2012-12-25T11:53:04.570 に答える