Jlabel 中图标和文字 如何只编辑其中的文字(实现类似于windows中文件夹改名的显示效果)

时间:2023-01-24 21:35:00
通过JLabel 的   setIcon() 和 setText() 方法设置了图标和文字

现在需要对其中的文字进行编辑

需要实现:  类似于windows中文件夹改名,前面图标不动,点文件名,出现类似于jtextfield的界面进行编辑


尝试实现CellEditor还是无法对其编辑
各位什么想法?

6 个解决方案

#1


我想    出jlabel的目的 就是为了不能修改

#2


刚学GUI
汗,在NetBeans里弄了下,没成功!~~

#3


O了

可以加一个隐藏的jTextfield
在右击时显示嘛
输完后再显示不可见

#4


如果有需要可以换用其他控件

只要能实现要求即可

1、带图标和文字
2、文字部分可编辑,编辑界面类似于jtextfield
3、编辑结束时显示效果与jlabel类似


以下是个人的一些想法:
1、将jlabel变成可编辑,仿照jtextfield实现celleditor,个人测试未通过,不知是不是水平有限过错了
2、改写jtextfield,使其可以插入图标,并在双击时设置可editor,否则can't
3、自定义控件,包括两个部分“jlabel 、 jtextfield”。看似容易实现,不过会影响显示效果,毕竟不够紧贴。
4、改写jtable,不要列名,实际是两列,一列插入图标,一列插文字。同样的问题,显示效果的控制,这个类比较复杂,不熟,有知道控制显示效果能实现上述要求的,简要说明,谢谢


接下来倾听各位高见

#5


引用 3 楼 hnwlh 的回复:
O了 

可以加一个隐藏的jTextfield 
在右击时显示嘛 
输完后再显示不可见


这个方法还不错

#6


目前通过组合控件的方法可以实现但是显示时有些问题

组合控件:imagepanel + jtextarea
方法
    imagepanel放图标,jtextarea 放文字
    默认jtextarea   seteditor(false)   setborder(null)
    鼠标单击,或要改名
            seteditor(true)
            setborder(createborder())

问题:
1、在jtextarea 变为可编辑后 鼠标光标不见了。当updateui 后光标有了,但是不闪烁,同时如果推出编辑,再次进入后出现错误

2、如何让jtextarea像windows一样随着输入字符的长度自动调整长高,到一定长度后换行,到一定高度无法增加,再显示变成“...”,再次进入编辑又可显示


目的很明确实现windows文件夹+文件名 可编辑效果,不可编辑的已经可以实现了
还有需要说明的,该控件我还要嵌套使用到JTree 中,所以本身不能过于复杂


所以楼上所说:
引用 3 楼 hnwlh 的回复:
O了 

可以加一个隐藏的jTextfield 
在右击时显示嘛 
输完后再显示不可见

需控件太多,无法调度。在jtree中我要根据鼠标点击判断控件,并分解的,加那么多,我怎么分解啊……

#1


我想    出jlabel的目的 就是为了不能修改

#2


刚学GUI
汗,在NetBeans里弄了下,没成功!~~

#3


O了

可以加一个隐藏的jTextfield
在右击时显示嘛
输完后再显示不可见

#4


如果有需要可以换用其他控件

只要能实现要求即可

1、带图标和文字
2、文字部分可编辑,编辑界面类似于jtextfield
3、编辑结束时显示效果与jlabel类似


以下是个人的一些想法:
1、将jlabel变成可编辑,仿照jtextfield实现celleditor,个人测试未通过,不知是不是水平有限过错了
2、改写jtextfield,使其可以插入图标,并在双击时设置可editor,否则can't
3、自定义控件,包括两个部分“jlabel 、 jtextfield”。看似容易实现,不过会影响显示效果,毕竟不够紧贴。
4、改写jtable,不要列名,实际是两列,一列插入图标,一列插文字。同样的问题,显示效果的控制,这个类比较复杂,不熟,有知道控制显示效果能实现上述要求的,简要说明,谢谢


接下来倾听各位高见

#5


引用 3 楼 hnwlh 的回复:
O了 

可以加一个隐藏的jTextfield 
在右击时显示嘛 
输完后再显示不可见


这个方法还不错

#6


目前通过组合控件的方法可以实现但是显示时有些问题

组合控件:imagepanel + jtextarea
方法
    imagepanel放图标,jtextarea 放文字
    默认jtextarea   seteditor(false)   setborder(null)
    鼠标单击,或要改名
            seteditor(true)
            setborder(createborder())

问题:
1、在jtextarea 变为可编辑后 鼠标光标不见了。当updateui 后光标有了,但是不闪烁,同时如果推出编辑,再次进入后出现错误

2、如何让jtextarea像windows一样随着输入字符的长度自动调整长高,到一定长度后换行,到一定高度无法增加,再显示变成“...”,再次进入编辑又可显示


目的很明确实现windows文件夹+文件名 可编辑效果,不可编辑的已经可以实现了
还有需要说明的,该控件我还要嵌套使用到JTree 中,所以本身不能过于复杂


所以楼上所说:
引用 3 楼 hnwlh 的回复:
O了 

可以加一个隐藏的jTextfield 
在右击时显示嘛 
输完后再显示不可见

需控件太多,无法调度。在jtree中我要根据鼠标点击判断控件,并分解的,加那么多,我怎么分解啊……