我的界面有多个JLabel组件,如何区分我点击是哪个JLabel组建??我是新手,帮帮忙吧! JLabel分别在不同的JPanel中,每个JPanel的大小也是动态的,如何不用设置Bounds或自适设置Bounds,只要能获得那个JLabel被点击就可以了。谢谢大家!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在JLabel添加一个(MousrListener)。当JLabel被点击的时候, 获得被点击的组件:MouseEvent.getSource()。并触发被点击后要处理的事件。 哈哈,我现在正好也遇到这个问题了。用面向对象的方式解决。把一组控件作为一个对象。同时设置一个ID,就可以知道了在你的例子里,把一个Label和一个Panel作为一个selectionobj。给他们加个附加属性---ID这样当你点中的时候至少就可以根据ID去找到你点的是那一组了。也就能知道是哪一个Label了实在不愿意,那你就搞一大堆If--else判断吧 windforce9811(数页薄纸,写尽百岁人生。万般心疼,难解世间情愁。) 给出你的代码例子好吗,让我学习一下。 public class PlacardRowObj implements Serializable { private static final long serialVersionUID = 4490406102424874231L; private PlacardInfoObj infoObj; //这是在程序中具体使用的对象 /** * . * */ public PlacardRowObj() { } /** * 新加了creatControl 方法,用来构造Panel * * @return plaRow */ public JPanel createControl() { JPanel plaRow = new JPanel(new FlowLayout()); plaRow.add(createIdLabel()); plaRow.add(createNameLabel()); plaRow.add(createTitleLabel()); plaRow.add(createPlaDateLabel()); plaRow.setOpaque(false); return plaRow; } // ==================================================================== private JLabel createIdLabel() { JLabel idLabel = new JLabel(); idLabel.setText(infoObj.getId()); idLabel.setOpaque(false); return idLabel; } private JLabel createNameLabel() { JLabel nameLabel = new JLabel(); nameLabel.setText(infoObj.getPromulgatorID()); nameLabel.setOpaque(false); return nameLabel; } private JLabel createTitleLabel() { JLabel titleLabel = new JLabel(); titleLabel.setText(infoObj.getPlacardTitle()); titleLabel.setOpaque(false); return titleLabel; } private JLabel createPlaDateLabel() { JLabel dateLabel = new JLabel(); dateLabel.setText(infoObj.getSendDate().toString()); dateLabel.setOpaque(false); return dateLabel; } // ==================================================================== /** * . * * @return infoObj */ public PlacardInfoObj getInfoObj() { return infoObj; } /** * . * * @param infoObj * PlacardInfoObj */ public void setInfoObj(PlacardInfoObj infoObj) { this.infoObj = infoObj; }}======================================上面的就是我现在用的一个改造后的实体对象。里面加了createControl方法,用来生成Panel以后选择的时候,就相当于选择了这个对象,我可以从这个对象中找到原始的数据信息在我这里是PlacardInfoObj infoObj java操作指定list问题 为什么我的socket的read方法没有阻塞,直接就执行过去了? 正则表达式 新手求解 大家帮忙看一个创建word文档的问题 请给我提示,象QQ那样的,点击qq好友或手机好友有下拉菜单 菜鸟问题 JB中怎样打包呀?怎样打成EXE?泣求!!!这对我很重要!!! 我要做打印表格的程序,但是表格有好几种类型,我该如何做,我对java打印不熟悉请赐教(100) 需资深java架构师的指点! 高手指教:怎么读取一个PDF文件中的文本啊? java中文乱码 大家帮忙看看
当JLabel被点击的时候, 获得被点击的组件:MouseEvent.getSource()。
并触发被点击后要处理的事件。
用面向对象的方式解决。
把一组控件作为一个对象。
同时设置一个ID,就可以知道了在你的例子里,把一个Label和一个Panel作为一个selectionobj。给他们加个附加属性---ID
这样当你点中的时候至少就可以根据ID去找到你点的是那一组了。也就能知道是哪一个Label了实在不愿意,那你就搞一大堆If--else判断吧
,让我学习一下。
* .
*
*/
public PlacardRowObj() {
} /**
* 新加了creatControl 方法,用来构造Panel
*
* @return plaRow
*/
public JPanel createControl() {
JPanel plaRow = new JPanel(new FlowLayout());
plaRow.add(createIdLabel());
plaRow.add(createNameLabel());
plaRow.add(createTitleLabel());
plaRow.add(createPlaDateLabel()); plaRow.setOpaque(false); return plaRow;
} // ====================================================================
private JLabel createIdLabel() {
JLabel idLabel = new JLabel();
idLabel.setText(infoObj.getId());
idLabel.setOpaque(false);
return idLabel;
} private JLabel createNameLabel() {
JLabel nameLabel = new JLabel();
nameLabel.setText(infoObj.getPromulgatorID());
nameLabel.setOpaque(false);
return nameLabel;
} private JLabel createTitleLabel() {
JLabel titleLabel = new JLabel();
titleLabel.setText(infoObj.getPlacardTitle());
titleLabel.setOpaque(false);
return titleLabel;
} private JLabel createPlaDateLabel() {
JLabel dateLabel = new JLabel();
dateLabel.setText(infoObj.getSendDate().toString());
dateLabel.setOpaque(false);
return dateLabel;
} // ====================================================================
/**
* .
*
* @return infoObj
*/
public PlacardInfoObj getInfoObj() {
return infoObj;
} /**
* .
*
* @param infoObj
* PlacardInfoObj
*/
public void setInfoObj(PlacardInfoObj infoObj) {
this.infoObj = infoObj;
}}
======================================
上面的就是我现在用的一个改造后的实体对象。里面加了createControl方法,用来生成Panel
以后选择的时候,就相当于选择了这个对象,我可以从这个对象中找到原始的数据信息
在我这里是PlacardInfoObj infoObj