社区
Java SE
帖子详情
怎么把JList里面的部分内容变成不可选
J2EE_ME
2009-08-26 11:29:09
各位,我今天遇到一个问题,我有一个JList,里面有一些选项,由于用户的等级原因,有些高等级用户选中的选项,低等级用户只能看和修改没有被高级用户选过的,其他的不能修改,也就是说我要根据不同条件,disable这个JList里面的部分内容,希望得到高手的指点,谢谢了。
...全文
418
16
打赏
收藏
怎么把JList里面的部分内容变成不可选
各位,我今天遇到一个问题,我有一个JList,里面有一些选项,由于用户的等级原因,有些高等级用户选中的选项,低等级用户只能看和修改没有被高级用户选过的,其他的不能修改,也就是说我要根据不同条件,disable这个JList里面的部分内容,希望得到高手的指点,谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
goodmrning
2009-09-01
打赏
举报
回复
ding!
dz007
2009-09-01
打赏
举报
回复
事件触发value值改变,然后调用repaint
repaint触发Renderer,Renderer根据value变重新绘制
J2EE_ME
2009-09-01
打赏
举报
回复
这次可以拿到value了
但是不是我想要的,我想的是在load这个页面的时候的value是disable的,后来选的是enable的
class mytestclass extends JLabel implements ListCellRenderer{
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
// TODO Auto-generated method stub
String s = value.toString();
setText(s);
if(isSelected){
setBackground(Color.BLUE);
setEnabled(false);
setOpaque(true);
}
return this;
}
}
哪个给点修改意见,谢谢
J2EE_ME
2009-09-01
打赏
举报
回复
还是不行呢,这是我的做法
class mytestclass extends JLabel implements ListCellRenderer{
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
// TODO Auto-generated method stub
if(isSelected){
setBackground(Color.BLUE);
setEnabled(false);
setOpaque(true);
}
return this;
}
然后在我的JList用
list.setCellRenderer(new mytestclass());
结果我的JList变空了,怎么回事呢。
J2EE_ME
2009-09-01
打赏
举报
回复
[Quote=引用 8 楼 chosen0ne 的回复:]
又想了想,只用ListCellRenderer也可以实现这个功能。不过当读取当前选择的下标时就要进行一些逻辑判断,如果该选项不可以选则需要提示重新选择等等。
[/Quote]
谢谢,我先研究一下
J2EE_ME
2009-09-01
打赏
举报
回复
算了,不纠缠在这个问题上了,我和用户探讨修改一下需求,谢谢各位了,结贴。
J2EE_ME
2009-09-01
打赏
举报
回复
[Quote=引用 13 楼 dz007 的回复:]
事件触发value值改变,然后调用repaint
repaint触发Renderer,Renderer根据value变重新绘制
[/Quote]
能详细点吗,我需要的是当这个dialog 被load的时候,有些已经被高级用户选中的就要disable,其他的就是可以选择的。
monkeyking1987
2009-08-26
打赏
举报
回复
针对不同等级的用户向JList中放入指定的项就可以了啊。没必要让人家能看到但又不能点击啊。
dz007
2009-08-26
打赏
举报
回复
JList好像可以实现过滤器…………
chosen0ne
2009-08-26
打赏
举报
回复
又想了想,只用ListCellRenderer也可以实现这个功能。不过当读取当前选择的下标时就要进行一些逻辑判断,如果该选项不可以选则需要提示重新选择等等。
chosen0ne
2009-08-26
打赏
举报
回复
[Quote=引用 6 楼 gongfuliang 的回复:]
引用 2 楼 chosen0ne 的回复:
楼上的方法可行。
如果非要这种效果,可以通过自己实现ListCellRenderer和ListSelectionModel接口
应该实现ListCellRenderer,至于SelectionModel就不需要实现了。
如果不可选,比如可以使用 extends JLabel implements CellRenderer,那么没有权限可以通过构造相应的Beans,设置enabled属性为false,那么renderer中获取这个属性进行绘制。
[/Quote]
实现ListCellRenderer是为了实现外观上的功能,就是点击某个不可选的选项,该选项颜色不会变化,即不会被标记为已选择的状态。而实际上现在这个选项已经被选择了,还是可以对它进行一些操作。实现ListSelectionModel就是为了物理上也让它不能选择,比如选择了某个不能选的选项后就置当前选择的下标为0等等。
gongfuliang
2009-08-26
打赏
举报
回复
[Quote=引用 2 楼 chosen0ne 的回复:]
楼上的方法可行。
如果非要这种效果,可以通过自己实现ListCellRenderer和ListSelectionModel接口
[/Quote]
应该实现ListCellRenderer,至于SelectionModel就不需要实现了。
如果不可选,比如可以使用 extends JLabel implements CellRenderer,那么没有权限可以通过构造相应的Beans,设置enabled属性为false,那么renderer中获取这个属性进行绘制。
J2EE_ME
2009-08-26
打赏
举报
回复
[Quote=引用 2 楼 chosen0ne 的回复:]
楼上的方法可行。
如果非要这种效果,可以通过自己实现ListCellRenderer和ListSelectionModel接口
[/Quote]
我去找找看,有没有办法实现你说的这两个接口。
J2EE_ME
2009-08-26
打赏
举报
回复
[Quote=引用 1 楼 monkeyking1987 的回复:]
针对不同等级的用户向JList中放入指定的项就可以了啊。没必要让人家能看到但又不能点击啊。
[/Quote]
根据用户要求,即使等级不够的用户,也要能看到所有的,因为那些是高级用户给低级用户预先设定的。
沉醉东风0001
2009-08-26
打赏
举报
回复
没见过这样的问题
chosen0ne
2009-08-26
打赏
举报
回复
楼上的方法可行。
如果非要这种效果,可以通过自己实现ListCellRenderer和ListSelectionModel接口
Java
Jlist
用法
本文介绍了Java中
JList
的使用,包括Vector类的应用、
JList
内容
的刷新、添加、删除和修改方法。同时讲解了如何结合JOptionPane、JTextField和JScrollPane进行交互。文章还探讨了全
选
、全不
选
和反
选
的实现策略。
JList
动态添加元素
本文分享了Java中
JList
动态添加元素的经验。
JList
是显示对象列表并允许用户
选
择项的组件,其
内容
由单独模型维护。添加
JList
到容器时可借助JScrollPane。静态添加元素后
不可
修改,动态添加则由DefaultListModel类实现,最后通过setModel()完成元素动态添加及数据刷新。
java
jlist
用法_
JList
的用法
本文介绍了 Java 中
JList
的用法,其
内容
可以是动态的,利用 ListDataListener 观察模型更改。简单动态
内容
JList
可用 DefaultListModel 类存储元素,还介绍了
JList
的构造函数、设置模型的方法,以及访问元素、修改列表元素的操作和 DefaultListModel 的众多方法。
Java的
JList
本文介绍了JavaSwing库中的
JList
组件,包括其基本用法、设置
选
择模式、事件处理和自定义渲染器。通过示例展示了如何创建、配置和扩展
JList
以满足不同需求。
java
jlist
更新_java
Jlist
如何实现已有
内容
刷新
博主在Java的JFrame中添加继承JPanel的MyJPanel类,MyJPanel中有用于显示数据的
JList
。点击按钮监听更新String[]数组并重新传给
JList
,控制台显示新数组已传递,但
JList
不刷新,使用setListData()方法也无效,博主怀疑逻辑有误并给出
部分
代码。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章