Как остановить событие перетаскивания внутри jDesktopPane

81
7

Я хочу заблокировать перетаскивание jInternalForm внутри панели рабочего стола. Я попытался выполнить следующие шаги: Предотвращение переноса JInternalFrame из JDesktopPane

Но это не сработало для меня. Может ли кто-то предложить для этого рабочий метод переопределения.

спросил(а) 2015-08-29T18:30:00+03:00 5 лет, 2 месяца назад
1
Решение
82

Вот несколько более простой пример пользовательского DesktopManager для сохранения внутреннего фрейма в пределах рабочего стола:

public class BoundsDesktopManager extends DefaultDesktopManager
{
/*
** This is called anytime a frame is moved.
** This implementation keeps the frame from leaving the desktop.
*/
@Override
public void dragFrame(JComponent component, int x, int y)
{
// Deal only with internal frames

if (component instanceof JInternalFrame)
{
JInternalFrame frame = (JInternalFrame)component;
JDesktopPane desktop = frame.getDesktopPane();
Dimension d = desktop.getSize();

// Too far left or right?

if (x < 0)
{
x = 0;
}
else if (x + frame.getWidth() > d.width)
{
x = d.width - frame.getWidth();
}

// Too high or low?

if (y < 0)
{
y = 0;
}
else if (y + frame.getHeight() > d.height)
{
y = d.height - frame.getHeight();
}
}

// Pass along the (possibly cropped) values to the normal drag handler.

super.dragFrame(component, x, y);
}
}

ответил(а) 2015-08-30T00:25:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема