sinat_22652465 2015-11-21 03:16
浏览 1488
已结题

java,关于添加组件和拖动组件的问题

1.点击newItem,生成一个面板
2.点击buttonNode后,鼠标在面板上点击会在点击位置生成一个label,点击一次生成一个(但我生成下一个label之后,前一个label的位置总是要回到初始化的位置,不知道怎么固定)
3.点击buttonSelect之后,可以拖动任意一个label(试了多种方法,要么只能拖动最后一个添加的label,要么就是所有label都在一起动)
4.还有一个问题,如果点击了buttonSelect之后再点击buttonNode,每次就会生成多个label,不知道怎么解决。

刚开始学做这个,有很多地方都不懂,请大家多多指教 @_@

 public void actionPerformed(ActionEvent e) {
        Object eventSource = e.getSource();
        if(eventSource == newItem){
            System.out.println("xinjian");
            getContentPane().add(panel,BorderLayout.CENTER);
            getContentPane().validate();
            panel.setBackground(Color.WHITE);


        }
        else if(eventSource == buttonNode){
            buttonNode.setEnabled(false);
            System.out.println("jiedianshijian");
            panel.addMouseListener(new MouseAdapter(){
                public void mouseClicked(MouseEvent e){
                    System.out.println("点击面板生成jdlabel");
                    node_count++;
                    System.out.println("node_count="+node_count);
                    i = node_count - 1;
                    System.out.println("i="+i);
                    panel.add(newLabelNode[i]);
                    panel.validate();
                    newLabelNode[i].setLocation(e.getX(), e.getY());
                    System.out.println("当前jd的位置:"+e.getX()+","+e.getY());
                }
            });
        }

        else if(eventSource == buttonSelect){
            buttonSelect.setEnabled(false);
            buttonNode.setEnabled(true);
            System.out.println("xuanzeshijian");
            for(i = 0;i < node_count;i++){
                newLabelNode[i].addMouseListener(this);
            }
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        for(i = 0;i < node_count;i++){
            if(e.getSource() == newLabelNode[i]){
                newLabelNode[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));  
                newLabelNode[i].addMouseMotionListener(new MouseMotionAdapter(){
                    public void mouseDragged(MouseEvent e){
                        for(i = 0;i < node_count;i++){
                            System.out.print("拖动第" + i + "个jd");

                            p[i] = newLabelNode[i].getLocation();
                            newLabelNode[i].setLocation(p[i].x+(e.getX()-origin[i].x), p[i].y+(e.getY()-origin[i].y));

                        }
                    }
                });
            }
        }   

    }
    public void mousePressed(MouseEvent e) {
            origin[i].x = e.getX();
            origin[i].y = e.getY();
            System.out.println("这是第"+i+"个jd:"+e.getX()+","+e.getY());   
    }
    public void mouseExited(MouseEvent e){
        for(i = 0;i < node_count;i++){
            newLabelNode[i].setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        }
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!