java – 使用SWT创建自定义按钮

前端之家收集整理的这篇文章主要介绍了java – 使用SWT创建自定义按钮前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想问一下与 this question相同但是使用SWT:有没有办法用你自己的按钮图形制作一个按钮而不仅仅是按钮内的图像?如果不是在java中创建自定义按钮的另一种方法

解决方法

public class ImageButton extends Canvas {
    private int mouse = 0;
    private boolean hit = false;

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

        this.addPaintListener(new PaintListener() {
            public void paintControl(PaintEvent e) {
                switch (mouse) {
                case 0:
                    // Default state
                    e.gc.drawString("Normal",5,5);
                    break;
                case 1:
                    // Mouse over
                    e.gc.drawString("Mouse over",5);
                    break;
                case 2:
                    // Mouse down
                    e.gc.drawString("Hit",5);
                    break;
                }
            }
        });
        this.addMouseMoveListener(new MouseMoveListener() {
            public void mouseMove(MouseEvent e) {
                if (!hit)
                    return;
                mouse = 2;
                if (e.x < 0 || e.y < 0 || e.x > getBounds().width
                        || e.y > getBounds().height) {
                    mouse = 0;
                }
                redraw();
            }
        });
        this.addMouseTrackListener(new MouseTrackAdapter() {
            public void mouseEnter(MouseEvent e) {
                mouse = 1;
                redraw();
            }

            public void mouseExit(MouseEvent e) {
                mouse = 0;
                redraw();
            }
        });
        this.addMouseListener(new MouseAdapter() {
            public void mouseDown(MouseEvent e) {
                hit = true;
                mouse = 2;
                redraw();
            }

            public void mouseUp(MouseEvent e) {
                hit = false;
                mouse = 1;
                if (e.x < 0 || e.y < 0 || e.x > getBounds().width
                        || e.y > getBounds().height) {
                    mouse = 0;
                }
                redraw();
                if (mouse == 1)
                    notifyListeners(SWT.Selection,new Event());
            }
        });
        this.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if (e.keyCode == '\r' || e.character == ' ') {
                    Event event = new Event();
                    notifyListeners(SWT.Selection,event);
                }
            }
        });
    }

}

猜你在找的Java相关文章