社区
Java SE
帖子详情
怎么把JList里面的部分内容变成不可选
J2EE_ME
2009-08-26 11:29:09
各位,我今天遇到一个问题,我有一个JList,里面有一些选项,由于用户的等级原因,有些高等级用户选中的选项,低等级用户只能看和修改没有被高级用户选过的,其他的不能修改,也就是说我要根据不同条件,disable这个JList里面的部分内容,希望得到高手的指点,谢谢了。
...全文
419
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
用法
Jlist
学习 Java Vector 类 Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的: Vector 是同步访问的。 Vector 包含了许多传统的方法,这些方法不属于集合框架。 Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。 Vector 类支持 4 种构造方法。 第一种构造方法创建一个默认的向量,默认大小为 10: Vector() 第二种构造方法创建指定大小的向量。 Vector(int size) 第三种构
JList
动态添加元素
JList
动态添加元素 转自:https://www.cnblogs.com/tianguook/archive/2012/01/31/2333992.html 学Java时用到了
JList
不知怎么添加元素,这里说说我的经验:
Jlist
显示对象列表并且允许用户
选
择一个或多个项的组件。单独的模型 ListModel 维护列表的
内容
。 这里要注意在把
Jlist
添加到容器时可以
选
择用JScrollPa...
java
jlist
用法_
JList
的用法
JList
的
内容
可以是动态的,换句话说,在创建
JList
之后,列表元素可以改变值,列表的大小也可以改变。
JList
利用swing.event.ListDataListener 实现在其模型中观察更改。正确实现的 ListModel在每次发生更改时向其侦听器发出通知。更改的特征由标识已修改、已添加或已移除的列表索引范围的swing.event.ListDataEvent 来描述。简单动态
内容
...
Java的
JList
默认情况下,
JList
会使用toString()方法来显示列表项。如果想要自定义列表项的显示方式,你可以通过设置自定义的单元格渲染器来实现。接口允许你控制列表项的显示。@Override} else {在这个例子中,类实现了接口并且可以自定义项的外观。当列表项被渲染时,方法会被调用。默认情况下,
JList
使用toString()方法来渲染列表项。在这个例子中,我们自定义了列表渲染器来改变列表项的显示方式。
java
jlist
更新_java
Jlist
如何实现已有
内容
刷新
如题!!!我在一个Jframe中加了一个myJpanel类继承了Jpanel,在MyJpanel中是一个
Jlist
,用来显示得到的数据!!一个按钮时,负责的相应监听更行String[]数组重新传个
Jlist
但控制台上...如题!!! 我在一个Jframe中加了一个myJpanel类继承了Jpanel,在MyJpanel中是一个
Jlist
,用来显示得到的数据!! 一个按钮时,负责的相应监听更行Str...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章