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

标签 java ide mocking drag resize

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

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

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

3.某些组件(在添加到面板期间,通过从组件 Pane 中选择该组件然后单击面板)放置得离预期点(热点)有点远。 这是拖动的代码:

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();

        }

} 

这是在面板中添加组件的一个。(drawingpane)

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();
}

最佳答案

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

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

关于Java:制作可调整大小和可拖动的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970452/

相关文章:

java - 循环从数据库表中获取无限ArrayList/List

java - ZeroMQ 重新排序

java - 当我在 Android Studio 的菜单中说添加地点时,它有时会打开 map ,有时应用程序会在不打开的情况下关闭

ide - SDK和IDE的区别

objective-c - 禁用在 JetBrains AppCode 中添加匹配的方括号

debugging - 在Keil uVision 5中,如何在逐步通过调试器时使文本编辑器行保持最新状态?

java - Mockito 我如何模拟这个方法?

java nlp - 从字符串中提取数字

c# - 是否有必要模拟单元测试中的所有依赖项?

java - Mockito 不是在 mock 电话