Итак, у меня есть jFrame, в котором я создаю главное окно интерфейса чата. Это окно / jFrame имеет несколько кнопок, каждая из которых показывает jDialog (который я создал ранее в Netbeans, перетаскивая jDialog на родительский (?) JFrame).
Моя проблема в том, что для обоих окон установлено значение undecorated = true
, поэтому я хочу позволить пользователю перетаскивать и перемещать все окна по своему желанию, щелкая и перетаскивая часть окон (которые имитируют строку заголовка, если не декорированы)
Во всех jFrames я добился этого с помощью следующего кода сразу после initComponents()
:
final Point point = new Point(0,0); // Why 'final' and not simply Point point?
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(!e.isMetaDown()){
point.x = e.getX();
point.y = e.getY();
System.out.println("Ratón pulsado: " + point.x + "," + point.y);
}
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
if(!e.isMetaDown() && point.y <= 17){ //Coordinates of title bar, any X and up to 17px from the top border
Point p = getLocation();
setLocation(p.x + e.getX() - point.x, p.y + e.getY() - point.y);
System.out.println("Ratón movido: " + (p.x + e.getX() - point.x) + "," + (p.y + e.getY() - point.y));
}
}
});
Однако я не знаю, как использовать этот код в jDialog. Когда я щелкаю его правой кнопкой мыши в навигаторе и выбираю «Настроить код», я не могу вставить его туда, потому что весь jFrame перестает работать. Я новичок в этой вещи jDialogs, дочерних элементов jFrames, поэтому, пожалуйста, помогите мне с некоторыми рекомендациями :) Спасибо