Я делаю бесплатный кроссплатформенный макет-дизайнер на Java.Я разработал пользовательский интерфейс и смог добавить компоненты (выбранные пользователем) на Panel. Теперь я хочу сделать следующее:
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();
}