求助,怎样用java实现这种功能

hc334521 2012-12-11 03:24:20
要求,用循环创建10个按钮,用循环给每个按钮加上监听,不可以不用循环
...全文
306 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hc334521 2012-12-12
  • 打赏
  • 举报
回复
果然高手多。不过我自己搞出来了吗,思路大同小异,建立一个监听类,就是在循环创建button时用new,把button立即用参数传到监听类里,button就不会被回收,谢谢大家
shan4260 2012-12-12
  • 打赏
  • 举报
回复
推荐9楼,,简洁
huntor 2012-12-12
  • 打赏
  • 举报
回复
class NumberAction extends AbstractAction { ... }

for(int i = 0; i < 10; i++){
    buttons[i] = new JButton(new NumberAction(i));
}
书断华 2012-12-11
  • 打赏
  • 举报
回复
当创建后,在响应监听的时候你是不是还得把这10个按钮区分开?

	for(int i = 0; i < 10; i++)
		{
			JButton b = new JButton("button" + i);
			b.setActionCommand("b"+i);//可以通过这个数值来区分每个button有个getActionCommand()方法
			b.addActionListener(new MyListener());//监听自己写吧
		}
zhaoming262350 2012-12-11
  • 打赏
  • 举报
回复
你应该是做计算器吧!!这个可以看一下; http://blog.csdn.net/zhaoming262350/article/details/8250807 这样实现: String str="123+456-789*0.=/"; for(int i=0;i<allButtons.length;i++) { allButtons[i]=new JButton(str.substring(i,i+1)); }
salaton 2012-12-11
  • 打赏
  • 举报
回复
引用 5 楼 tai8feng 的回复:
private Lisener getLisener() { return new Lisener(); } private void test() { for(int i = 0;i<10;i++) { JButton btn = new JButton().addLisener(getLisener()); ……
嘿嘿,直接add到容器组件里面不更好?ArrayList什么的,不跟数组差不多嘛。
司机 2012-12-11
  • 打赏
  • 举报
回复
private Lisener getLisener() { return new Lisener(); } private void test() { for(int i = 0;i<10;i++) { JButton btn = new JButton().addLisener(getLisener()); } } 如需要存起来就new ArrayList<JButton>()存;
hotsaysauce2 2012-12-11
  • 打赏
  • 举报
回复

<script type="text/javascript">
  function ff(value){
     alert(value)
  }
</script>
<body>
      <%for(int i=0;i<=10;i++){%>
      <button onclick="ff('<%= i %>')">aa<%= i %></button>
     <% } %>
</body>
hc334521 2012-12-11
  • 打赏
  • 举报
回复
button数组似乎可以,但是要求不许用
ywjustice 2012-12-11
  • 打赏
  • 举报
回复
这个问题相当难
hc334521 2012-12-11
  • 打赏
  • 举报
回复
代码要很简洁,不要求实现监听,不须允许使用内部类

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧