社区
Java SE
帖子详情
束手无策了,来求9高人指点!
zygege
2007-08-11 12:27:43
写游戏遇到一个问题:声明了一个JButton的子类OpenButton
在包含它的JPane中的actionPerformed中用
((OpenButton)(e.getSource())).setText(""),按钮的标签没有改变,为何?
或者说我如何获得一个变量名的字符串表现形示,toString怎么也找不到变量名中的半个字符,都是关于类的信息和对象本身的信息,有个叫哈稀码的16进制方法,不知道能不能得到变量名?
求高人出来指点一下!
...全文
273
11
打赏
收藏
束手无策了,来求9高人指点!
写游戏遇到一个问题:声明了一个JButton的子类OpenButton 在包含它的JPane中的actionPerformed中用 ((OpenButton)(e.getSource())).setText(""),按钮的标签没有改变,为何? 或者说我如何获得一个变量名的字符串表现形示,toString怎么也找不到变量名中的半个字符,都是关于类的信息和对象本身的信息,有个叫哈稀码的16进制方法,不知道能不能得到变量名? 求高人出来指点一下!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zygege
2007-08-29
打赏
举报
回复
那个e.getSource()取道的不是button.是JPanel才对阿
===========================
那个是JBUTTON(JBUTTON是Jpanel里的一个按钮,注册this,当然属于类里面的处理事件,不可能处理Jpanel,JPANEL我压根没注册,怎么执行),我已经解决了,问题如楼上所说是监听器顺序问题。
insiku
2007-08-28
打赏
举报
回复
书上说是同时执行
======================
你看的哪本sb写的书
虚拟机不保证监听器的执行先后 只保证执行
不要编写跟监听器执行先后有关的代码
insiku
2007-08-28
打赏
举报
回复
与其这么费尽说个半天
还不如上代码
shmilycharlene
2007-08-27
打赏
举报
回复
在包含它的JPane中的actionPerformed中用
((OpenButton)(e.getSource())).setText(""),按钮的标签没有改变,为何?
那个e.getSource()取道的不是button.是JPanel才对阿
zygege
2007-08-13
打赏
举报
回复
多谢楼上ukeychen() 的提醒,还有smyl9989(☆☆☆☆☆) 的这句话:e.getSource是JPane吧。
ukeychen() 提到actionCommand方法很管用,加上smyl9989的那句话的提醒(虽然不是原因),我找到了openButton类,我里面的单击方法是
if this.getText().equals("")
setText(label);
而在jpane中的单击方法是:
((OpenButton)(e.getSource())).setText("") ;
根据system.out.println()测试,我分别在两个事件中放了打印,发现是jpane中的单击方法先执行,由于先将标签设为了空,而后执行openButton类本身的单击方法,当然又将标签设置回来了。
搞不懂的是:
我另外写了一个applet,却发现是类本身的单击方法先执行,然后才是面板里的。
为什么,到底这两个方法,谁先执行,为什么一会你先,一会他先!书上说是同时执行???
所以这个游戏我不用OpenButton了,直接用了JButton,用了actionCommand方法,很管用,并实现了游戏功能!!!
感谢楼上!
但是这个游戏遇到一个问题,设了按钮图标,在eclipse中运行,显示为一个很小的点。
而在JCreator中运行,则没有问题。我是在中文路径中写的这个程序,我将程序移植到英文路径下,eclipse才通过运行,显示了图标。而JCreator无论什么路径,都行。这表明了什么?
eclipse你还要向你的弟弟JCreator学习啊,人家功能 是差点,可是实现的功能,都不错,你搞什么不支持中文路径!!
另一个关于jar问题,运行正常,打包后运行又出问题,是用eclipse打
zygege
2007-08-12
打赏
举报
回复
我创建了包含30个按钮( OpenButton open[30]=new OpenButton() )的按钮组,用循环注册了监听器,并实例化了每个元素。,也都依次添加到Jpanel中了,按GridLayout,5,6排的.
并且有一点要说明,如果我直接在actionPerformed中写OpenButton的实例对象,则行:如open[0].setText("")是可行的。
并且我的Jpanel并没有注册任何监听器。所以是Jpanel的可能性基本上没有。
DirectRay
2007-08-12
打赏
举报
回复
你看看用这样接受,能不能打出来。
if (e.getSource() == jButton[1])
//TODO:添加测试代码。不妨直接抓名字。
}
zygege
2007-08-12
打赏
举报
回复
好。我回头试试,现在不在家!
ukeychen
2007-08-12
打赏
举报
回复
可能跟你类有关吧,
既然你说 open[0].setText("")是可行的。
那么,你在给button初始化时,
给第一个button.setActionCommand("0");
给第二个button.setActionCommand("1");
接下来依次类推,这些0,1,2……数字也就是跟数组下标想对应
那么一来,你在监听里
将((OpenButton)(e.getSource())).setText(""),
改成以下两句就行了:
int i=Integer.ParseInt(e.getActionCommand);
open[i].setText("");
我没调试过,不过我想行的,你自己试试看吧
zygege
2007-08-11
打赏
举报
回复
狂晕啊,不是说这个是中国最牛的程序员BBS嘛,怎么连沙发都米有人来给我坐啊!
混沌骑士
2007-08-11
打赏
举报
回复
((OpenButton)(e.getSource())).setText("") --- > e.getSource是JPane吧 不知道你的代码怎么写的
机房管理系列之远程协助
我们在管理服务器遇到紧急问题时,需要我们立刻能够凭经验来解决问题,遇到新的未知问题时有时我们也会
束手无策
,需要别人的“
指点
一二”,我们可以打技术支持电话或是查找KB知识库来获得帮助,那么还有没更好的方法呢?比如说,从公司别的站点寻求解决之道,我们的远程桌面开启之后,我们并不知道“
高人
”做些什么,况且权限密码不允许告诉别人。那么我们只好通过远程协助来管理...
网络安全编程心得——大学篇
开设这个专栏,不是为了炫耀技术,仅仅是因为舍不得。这种舍不得来自于自己曾经的付出,付出就会倾注精力和时间。在读研期间,研究内核、操作系统、网络协议,倾注了自己大量的心血。可惜,最后自己选择的却是和这些不相关的工作,不得不说这是一种遗憾。本人一般211研究生毕业,不知名、不是大牛,很可惜的是一路走来没有
高人
指点
迷津,学习中走了很多的弯,在不断的总结和反思中感觉应该和大家分享一下这些走...
mac使用技巧
本帖最后由 xc8140789a 于 2014-4-9 14:41 编辑2014从这里开始!!!谢谢大家热烈支持, 感动! 你们的支持是我更新的动力!如果觉得不错,顺便留下脚印,说说自己为什么喜欢Mac吧!有机会被加入到文章(10.为什么喜欢mac中)哦!踊跃回帖哦!什么时候能攒满满一千零一个 RP[s:23貌似有点贪心!推荐交流...
基于k8s搭建mysql主从同步
网络上有很多基于K8S搭建mysql主从同步的文章,其中有很多都源自于下面这篇文章,我们权且就叫它参考文章吧: https://www.jianshu.com/p/509b65e9a4f5 这篇文章里的方法是没有问题的,但是因为作者在做实验的时候用到的mysql官方的docker镜像比较老,如果采用官方最新的镜像(基于mysql8.0.15)用参考文章里的方法会遇到一些...
黑马程序员——ios面试学习一:Mac系统使用教程——黑马 ios 技术博客
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 学习Mac从这里开始!!! 谢谢大家热烈支持, 感动! 你们的支持是我更新的动力!大家留言说说为什么喜欢mac 吧!留下你不一样的见解,还有机会录入到 文章中哦! 特别更新: 2013-2-4 妈妈再也不要担心我的Macb
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章