容器怎样响应它自己里面的组件的事件?

LearnBeing 2005-06-18 05:29:41
如:
我定义了一个节点类,包括了节点的id和一个msg属性。当鼠标点击该点时,改变msg的值

package test;

class Node extends JLabel implements MouseListener{
String nodeId;
String msg;
public Node(String id) {
super(id, new ImageIcon(), JLabel.CENTER);
ImageIcon icon = new ImageIcon("images/Windows.gif");
this.setIcon(icon);
this.nodeId = id;
this.msg = this.nodeId + " 还没被点击!" ;
this.addMouseListener(this);
}

public void mouseClicked(MouseEvent e) {
this.msg=this.nodeId + " 被点击过!";
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}

}

容器的代码如下:
class GraphPanel extends JPanel{
Node node ;
JTextPane showMsgTxtPane;

public GraphPanel(){
for(int i = 0 ;i < 5; i++){
node = new Node("Windows" + i) ;
this.add(node);
}
showMsgTxtPane = new JTextPane();
this.add(showMsgTxtPane);
}
}

我的问题是:当鼠标在GraphPanel中点击到每个Node时,GraphPanel中的showMsgTxtPane显示该Node中的msg。

大哥们帮帮忙啦,先謝了!


...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2005-06-20
  • 打赏
  • 举报
回复
不要为那么多的 Node 添置 监视器了, 添给 Panel 行不?
然后用

for( Component comp : 孩儿们){
if ( comp.XXX ( e.getPoint()) //这个方法名忘记了,找找看, 是判断那个Point 是否在 comp 的范围内,
}

找到当前被击中的.
LearnBeing 2005-06-20
  • 打赏
  • 举报
回复
问题还没解决,难道没人碰到这类问题吗?还是问题太简单了?
LearnBeing 2005-06-19
  • 打赏
  • 举报
回复
那该如何实现啊?请请教.
hongyan2004 2005-06-19
  • 打赏
  • 举报
回复
我想应该不是由容器来响应吧,要达到这个效果

62,614

社区成员

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

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