有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

二,。允许在拖动时在面板内平滑移动零部件。(此时它似乎令人沮丧,因为它在移动时闪烁&;将其自身放置在另一个位置,而不是鼠标指针热点!)

三,。某些组件(通过从组件窗格中选择该组件,然后单击面板来添加到面板中)放置在离预期点(热点)稍远的位置。 以下是拖动的代码:

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) 个答案

  1. # 1 楼答案

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

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