[RockWell FTPC]随笔_一个mes整合的小问题

在项目中需要把之前两个工厂的mes整合在一起,在整合FORM布局风格时,需要调整控件位置,在复制控件后,粘贴时控件名会变化,比如一个按钮原名为buttonAdd,复制粘贴后就变成了button1,这就恶心了.

反编译Client.jar, 找了半天,发现这个类:

com.datasweep.compatibility.formdesigner.DesignPanel

方法

   private void handlePaste() {
    Clipboard clipboard = getToolkit().getSystemClipboard();
    Transferable transferable = clipboard.getContents(this);
    if (transferable == null) {
      getToolkit().beep();
      return;
    } 
    if (this.item == null || !(this.item instanceof CContainer) || this.secItems.size() > 0 || this.item instanceof com.datasweep.compatibility.ui.ActivityControl || this.item instanceof com.rockwell.smartedit.SmartEdit || isActivityControl(this.item)) {
      getToolkit().beep();
      return;
    } 
    if (isActivityControl(this.item)) {
      getToolkit().beep();
      return;
    } 
    int i = Thread.currentThread().getPriority();
    Thread.currentThread().setPriority(10);
    Vector<CComponent> vector = new Vector();
    CContainer cContainer = null;
    try {
      Vector<byte[]> vector1 = (Vector)transferable.getTransferData(dataFlavor);
      cContainer = (CContainer)this.item;
      this.undoRedoAction = true;
      for (byte b = 0; b < vector1.size(); b++) {
        CComponent cComponent = CComponent.fromByteArray(vector1.elementAt(b));
        vector.add(cComponent);
        if (cComponent instanceof CControl) {
          if (this.glass.doAddComponent2(cComponent, cContainer))
            setSelectedItem(cComponent, (b > 0), false); 
        } else if (cComponent instanceof com.datasweep.compatibility.ui.INonVisualComponent && this.glass.doAddComponent(cComponent, (CContainer)this.root)) {
          setSelectedItem(cComponent, false, false);
        } 
      } 
    } catch (UnsupportedFlavorException unsupportedFlavorException) {
      getToolkit().beep();
    } catch (Exception exception) {
      getToolkit().beep();
      exception.printStackTrace();
    } finally {
      Thread.currentThread().setPriority(i);
      this.undoRedoAction = false;
      PasteComponentEdit pasteComponentEdit = new PasteComponentEdit(cContainer, vector);
      this.undoSupport.postEdit(pasteComponentEdit);
    } 
  }
  public boolean doAddComponent(CComponent param1CComponent, CContainer param1CContainer) {
      if (param1CComponent instanceof CControl) {
        Dimension dimension = ((CControl)param1CComponent).getPreferredSize();
        Point point = ((CControl)param1CComponent).getLocation();
        if (point == null)
          point = new Point(0, 0); 
        ((CControl)param1CComponent).setBounds(point.x, point.y, dimension.width, dimension.height);
        ((CControl)param1CComponent).setPreferredSize(new Dimension(dimension.width, dimension.height));
      } 
      createName(param1CComponent);
      if (param1CContainer == null || param1CContainer instanceof com.datasweep.compatibility.ui.ActivityControl || DesignPanel.isActivityControl(param1CContainer))
        return false; 
      param1CContainer.add(param1CComponent);
      param1CContainer.validate();
      if (param1CComponent instanceof CContainer) {
        CComponent[] arrayOfCComponent = ((CContainer)param1CComponent).getControls();
        if (arrayOfCComponent != null)
          for (byte b = 0; b < arrayOfCComponent.length; b++)
            doAddComponent(arrayOfCComponent[b], (CContainer)param1CComponent);  
      } 
      DesignPanel.AddComponentEdit addComponentEdit = new DesignPanel.AddComponentEdit(param1CContainer, param1CComponent, DesignPanel.this.createSelectionVector());
      DesignPanel.this.undoSupport.postEdit(addComponentEdit);
      DesignPanel.this.fireComponentAdded(new CContainerEvent((CComponent)param1CContainer, 300, param1CComponent));
      return true;
    }

在查看代码的过程中发现了

createName(param1CComponent);

把这一行注释掉,打个包
操作步骤同https://blog.csdn.net/weixin_46214043/article/details/119639559

试一下效果
在这里插入图片描述
没问题,接下来只需要复制粘贴改位置了,节省了一大半的时间

然后,给项目组同事讲了一下如何使用,干活效率快到飞起

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值