Нет «события», которое вам нужно перехватить. Как только Swing обрабатывает событие мыши, он сообщает компоненту о перемещении - и здесь вы можете настроить значения движения.
move, setLocation и resize - это всего лишь оболочки для setBounds. Расширьте JInternalFrame, переопределите метод setBounds () и игнорируйте новое значение x (или y, если вы хотите горизонтальное перемещение) перед вызовом super.setBounds ().
import javax.swing.JInternalFrame;
public class VerticalOnlyFrame extends JInternalFrame {
public void setBounds(int x, int y, int width, int height) {
super.setBounds(getBounds().x, y, width, height);
}
}
Это должно решить ваш пример, хотя просмотр кода JRE setBounds () на самом деле является оберткой для устаревшего метода reshape (), так что если вы чувствуете смелое переопределение, вместо этого reshape ().