自定义复选框

时间:2012-07-12 16:56:11

标签: swt eclipse-rcp jface

我在考虑是否可以将类似this的样式应用到swt复选框。
我寻找自定义组件,但没有找到任何东西 谢谢你们

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容: Create a custom button with 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.ONIcons.OFF是两张图片,WIDTH_OF_IMAGE和HEIGHT_OF_IMAGE是您使用的图片的宽度和高度。

答案 1 :(得分:2)