1

このようなスタイルをswtチェックボックスに適用する方法があるかどうかを考えていました。
カスタムコンポーネントを探しましたが、何も見つかりませんでした。
君たちありがとう

4

2 に答える 2

3

次を使用できます 。SWTを使用してカスタムボタンを作成する

出発点として。内でPaintListener、ボタンを希望どおりにペイントできます。

これが私が試した小さな例です:

import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;

public class ImageButton extends Canvas {
    private boolean checked = false;
    private final ImageButton button = this;

    public ImageButton(Composite parent, int style) {
        super(parent, style);

        this.addPaintListener(new PaintListener() {
            @Override
            public void paintControl(PaintEvent e) {
                if(checked)
                {
                    e.gc.drawImage(Icons.ON, 0, 0);
                }
                else
                {
                    e.gc.drawImage(Icons.OFF, 0, 0);
                }
                button.setSize(WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);
            }
        });
        this.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseUp(MouseEvent e) {
                checked = !checked;
                redraw();
            }
        });
    }
}

ここでIcons.ON、とIcons.OFFは2つの画像で、WIDTH_OF_IMAGEとHEIGHT_OF_IMAGEは使用する画像の幅と高さです。

于 2012-07-12T17:17:01.773 に答える
2

OPAL ウィジェット ライブラリには、そのようなボタンがあります。

http://code.google.com/a/eclipselabs.org/p/opal/wiki/SwitchButton

于 2012-08-30T10:08:20.467 に答える