Java:制作可调整大小和可拖动的组件

Posted

技术标签:

【中文标题】Java:制作可调整大小和可拖动的组件【英文标题】:Java:making resizable & draggable components 【发布时间】:2011-12-19 16:55:13 【问题描述】:

我正在用 Java 制作一个免费的跨平台模型设计器。我已经设计了 UI 并且能够在面板上添加组件(由用户选择)。现在我想做以下事情-

1.在应用程序运行时使添加的组件重新调整大小。我的意思是当鼠标指针位于该组件的边界时,我想显示一个双头箭头,以便用户开始拖动鼠标指针并增加其大小或减少。

2.在拖动时启用面板内组件的平滑移动。(此时它似乎令人沮丧,因为它在移动时闪烁(闪烁)并将其放置在另一个位置而不是鼠标指针热点!)

3.一些组件(在添加到面板的过程中,通过从组件窗格中选择该组件然后单击面板)放置在距离预期点(热点)稍远的位置。 这是拖动的代码:

public void dragControl(MouseEvent evt)

    JComponent jc=(JComponent)evt.getSource();
    if((evt.getX()<drawingPane.getWidth()-64)&&(evt.getY()<drawingPane.getHeight()-32))
        
            jc.setLocation(evt.getX(),evt.getY());
            drawingPane.validate();

        

 

这是在面板中添加组件的一个。(绘图窗格)

private void finalizeControlAddition(JComponent c,JComponent cont,MouseEvent evt,int width,int height)

    if((evt.getX()<drawingPane.getWidth()-width)&&(evt.getY()<drawingPane.getHeight()-height))
                    addComponent(cont,c,evt.getX(),evt.getY(),width,height);
                //
                c.setName(Integer.toString(counter));//save a tag of its identification
                //
                components.add(counter, c);
                counter++;
                //
                selectedControl=-1;
                //
                cont.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                //
                statusLabel.setText("Control added.Drag to give proper position or select to change properties from Properties pane.");

private void addComponent(Container container,Component c,int x,int y,int width,int height)

      c.setBounds(x,y,width,height);
  container.add(c);
      c.repaint();

【问题讨论】:

如果你回答了你的问题,你应该写一个答案而不是评论,并将其标记为已回答:) 感谢您的建议。:) 我是一个新手。我只是没有找到“标记为已回答”之类的东西! 【参考方案1】:

经过努力我已经解决了这些问题。由于这些是任何人都可能面临的非常常见的问题,因此我创建了一个开放库来执行所有这些您可以在应用程序中使用的任务。可以在这里找到:

http://sourceforge.net/p/actioncomponent/home/Home

【讨论】:

以上是关于Java:制作可调整大小和可拖动的组件的主要内容,如果未能解决你的问题,请参考以下文章

保存元素位置和大小(JQuery ui 可调整大小和可拖动)

可调整大小和可拖动的 div

从 UI 调整 java swing 组件的大小

当浏览器调整大小时,不断在视频上移动可调整大小/可拖动的图像

可调整大小导致其下方的其他元素移动

在画布上制作可拖动、可调整大小的图像