java的Jpanel方法
jpanel中有remove(inti)int方法;这个i可否通过一个方法带出来,比如我面板中有一些控件,当我点击其中一个的时候我想获取这个控件的id‘,就是上面方法里的...
jpanel中有remove(int i)int方法;这个i可否通过一个方法带出来,比如我面板中有一些控件,当我点击其中一个的时候我想获取这个控件的id‘,就是上面方法里的i,可以做到吗
展开
1个回答
展开全部
首先remove(int) 不是JPanel自己的方法,是它从Container类继承而来的方法
Container顾名思义,是组件的容器,它可以放许多组件。而remove(int)的参数显然不是组件的id,而是它在容器中的索引(如同数组的下标)
你要删除一个组件,可以使用 Container的remove(Component)方法,因为这个Component很容易通过事件获得,而它的索引则需要做执行一步才能获得。
Container顾名思义,是组件的容器,它可以放许多组件。而remove(int)的参数显然不是组件的id,而是它在容器中的索引(如同数组的下标)
你要删除一个组件,可以使用 Container的remove(Component)方法,因为这个Component很容易通过事件获得,而它的索引则需要做执行一步才能获得。
更多追问追答
追问
谢谢你的回答,我在panel中放了很多按钮,我想通过双击按钮这个事件来获得这个按钮的id,我用getcomponentAt(e.getx,e.gety)怎么做不到,根本没有反应,是不是要在每个按钮上添加监听,我就是想在面面板中获得我双击的那个组件,我的面板布局上GridLayout(0,1),面板房子JScrollPane中的,可以用getcomponentAt(e.getx,e.gety)不?
你说的索引怎么才可以活的啊
追答
1. 你监听不到JPanel的鼠标事件,很有可能是因为JPanel把这些事件发给那些JButton了,这种时候你需要在按钮上监听事件。
2. GridLayout不熟悉,这个应该并不重要。我觉得getcomponentAt 是能得到相应组件的。
3. 查一下API吧,Container至少有一个方法是能得到所有的子组件的,于是在里面遍历一遍就能拿到索引了,至于是否有单独的方法做这个事情,暂时想不起来...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询