В моей программе есть jPanel с jLabel внутри. Я добавил этот код, чтобы сделать jPanel перетаскиваемым, и он отлично работает.
private void formMousePressed(java.awt.event.MouseEvent evt) {
prevX = evt.getXOnScreen();
}
private void formMouseDragged(java.awt.event.MouseEvent evt) {
this.setLocation(this.getX() + evt.getXOnScreen() - prevX, this.getY());
prevX = evt.getXOnScreen();
// this.labBirthDate.setText(Integer.toString(this.getX()));
}
Однако, когда я добавил закомментированный код, который обновляет метку, чтобы показать положение панели, он перестал работать. В частности, когда я щелкаю и перетаскиваю панель, вместо того, чтобы следовать за мышью, панель просто заикается, а текст изменяется на значение ~ 10, меняясь при каждом перемещении мыши.
Делая вещи еще более запутанными, если я вместо этого изменю его так, чтобы он просто установил текст на «бла», это не приведет к ошибке. Кроме того, если я просто установлю переменную равной this.getX(), это не приведет к ошибке. Если я затем установлю метку как значение этой локальной переменной, ошибка вернется.
Кто-нибудь знает, почему это может происходить? Есть ли обходной путь, который я могу использовать для получения того же эффекта?