问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何禁止mui-slider的拖动,只需点击转换列表1

发布网友 发布时间:2023-09-29 12:57

我来回答

1个回答

热心网友 时间:2023-11-02 07:05

我没系统学习过Jave Swing的相关知识,基本上靠摸索出来的一点经验,供参考。
1、可以通过编写MouseClickedCallback回调函数实现所需功能。其它或许还有更好的做法,但就我目前所知,可能MouseClickedCallback是比较合适的,因MousePressedCallback和MouseReleasedCallback也可能会和拖动滚动条操作冲突。

2、需要获取点击鼠标时的位置,这可以通过MouseClickedCallbackData数据获取。该数据中有相对控件的位置和绝对位置,我采用的做法是通过匹配MOUSE_CLICKED后面括号中的内容提取数据。数据为double类型,需首先转换为字符串进行匹配。

3、确定鼠标在滚动条中所对应的数据,有三点需要特别注意:
(1)滚动条的方向:由Orientation确定,0为横向(默认),1为纵向。
(2)边距:貌似横向和纵向不同,分别为15和10(不知是否有某属性可以获取该值)。
(3)垂直滚动条的数据是从下向上的,但鼠标位置则以上面为基准位置,需要进行一个简单的变换。

4、目前的局限:
(1)未区分鼠标的左键和右键。
(2)未考虑滚动条采用其它单位时的处理。
(3)就目前所实现的而言,可以看到有一个先滑动固定距离,然后再到达指定位置的过程,想不出有什么办法可以克服。

5、补充:
(1)点击位置在滚动条范围内时直接到达该位置,如果在两端点击,则仍按照滚动固定距离处理,这是有意为之;
(2)可以使用MouseReleasedCallback回调函数代替MouseClickedCallback,效果似乎没
有差别(注意获取数据的细节有些差别)。

参考代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

function slider_scorebar_click_callback(varargin)

d = get(gcbo);
m = char(d.MouseClickedCallbackData);
p = 'MOUSE_CLICKED,(';
m = char(d.MouseClickedCallbackData);
inx = strfind(m,p);
m = m(inx+length(p):end);
inx = strfind(m,')');
pos = str2num(m(1:inx(1)-1));
if ~d.Orientation % 横向
s = d.Width;
p = pos(1);
offset = 15;
else % 纵向
s = d.Height;
p = s - pos(2);
offset = 10;
end
if p >= offset && p <= s-offset
mx = d.Maximum;
mn = d.Minimum;
v=mn+(p-offset)/(s-2*offset)*(mx-mn);
set(gcbo,'value',v);
end

如果使用MouseReleasedCallback回调函数,参考代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

function slider_scorebar_release_callback(varargin)
d = get(gcbo);
m = char(d.MouseReleasedCallbackData);
p = 'MOUSE_RELEASED,(';
inx = strfind(m,p);
m = m(inx+length(p):end);
inx = strfind(m,')');
pos = str2num(m(1:inx(1)-1));
if ~d.Orientation % 横向
s = d.Width;
p = pos(1);
offset = 15;
else % 纵向
s = d.Height;
p = s - pos(2);
offset = 10;
end
if p >= offset && p <= s-offset
mx = d.Maximum;
mn = d.Minimum;
v=mn+(p-offset)/(s-2*offset)*(mx-mn);
set(gcbo,'value',v);
end
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
高考560分能上211大学吗? - 知乎 河北高考多少分能上211大学 河北2023高考211分数线是多少? 考560分能上211大学吗河北 刀剑英雄合王者武器多少费用 刀剑英雄帝辰王者现在什么价位 2021年度工程施工合同范本 2021承包转让简单的合同范本 2021医院食堂承包合同范本 div+css+js实现菜单的收缩与展开 调用数据库内容的时候为什么内容字段... mui中选项卡切换中怎么禁止页面左右滑动1 工伤赔偿申请强制执行要多久?1 工伤赔偿在法院申请强制执行需要多长时间 用不分手的恋爱的歌词组成一个十二字的网名!狠急!帮忙想想!越多越好... 番茄宝宝爱画画游戏安卓游戏如何下载 iPhone左右滑动的时候有时候会切换程序,要怎么关闭这个功...3 怎么禁止浏览器,左右滑动时翻页?14 代码中怎样实现点击时替换上滑下滑 为什么一线大牌的厨柜柜体用颗粒板?1 为什么电话停机三个月怎么不能用了 谁能把这个地址千叶县,东金市,田间251番地1コーポ太阳2 101号室... 非车险理赔需要哪些方面的法律知识? ips屏幕按压会出现水波纹吗? ...的LRC格式歌词万分感谢!我的邮箱:z aochuanai@126.com. 求ピアノとvocalの为の萃香八番~孤独 的罗马音歌词和日文歌词_百度知 ... 上海绿牌要额度下来前不能提车? 为什么莫名其妙被限制了? 为什么有的公司不靠谱? 为什么有些公司那么不靠谱呢? 京东为啥不能添加信息 如何禁止viewPage左右滑动的效果1 简述我国刑法的空间效力?25 如何理解刑法关于时间效力和空间效力的规定 一般法院强制执行工伤赔偿需要多久? 工伤赔偿申请强制执行得多长时间。要回了31 我国刑法的空间效力采用的是5 刑法的空间效力的概念和原则?63 ...里下载的PPT文件莫名其妙的变成了同一个WORD文件呢? 剑网3指尖江湖世界首领累计达到多少贡献分才能完成义动云天? 有人冒用我的身份信息贷款了,我该怎么办?23 我的个人信息被冒用在银行贷款,我该怎么办4 身份证信息银行卡电话号码被泄露,骗子利用我的个人信息在网络平...2 在我不知情的情况下银行工作人员用我的身份在银行担保给别人贷款... 我的个人信息被别人利用贷款,一直未还我应该怎么办???10 有一首儿童唱的歌曲,歌词有这样一句,妈妈的爱是(**)的爱。...46 有一首儿童唱的歌曲,歌词有这样一句,妈妈的爱是(**)的爱。... 从中介手中租房签合同要注意些什么?12 从二房东手里租房子,合同该怎么签,要注意些什么?204 教你与房屋中介签租房合同时需要注意哪些事项(下)109 找中介租房子,签了合同,不给看合同,请问怎么办2