加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:37:08 所属栏目:Java 来源:网络整理
导读:我想问一下与 this question相同但是使用SWT:有没有办法用你自己的按钮图形制作一个按钮而不仅仅是按钮内的图像?如果不是在java中创建自定义按钮的另一种方法? 解决方法 public class ImageButton extends Canvas { private int mouse = 0; private boole
我想问一下与 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);
                }
            }
        });
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读