2015-09-03 4 views
0

У меня есть следующий код:Mouse Event для перемещения кадра не работает

panel.addMouseListener(new MouseAdapter() { 
    public void mouseDragged(MouseEvent e) { 
     frame.setLocation(e.getXOnScreen(), e.getYOnScreen()); 
    } 
}); 

panel является JPanel, и весь импорт был включен. Теперь, когда я перетаскиваю panel, frame не перемещает маленький бит. Почему это и как мне его исправить?

EDIT: frame без отделки.
EDIT: mouseDragged не срабатывает - вот в чем проблема. EDIT: КОД !!!!!

package user_interface; 

import java.awt.Color; 
import java.awt.GridLayout; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Test extends JFrame { 
    public Test() { 
     this.setUndecorated(true); 
     this.setLayout(new GridLayout(3, 3, 3, 3)); 
     for (int i = 0; i < 4; i++) { 
      this.add(new JPanel()); 
     } 
     JPanel panel = new JPanel(); 
     panel.setBackground(new Color(0)); 
     panel.setToolTipText("Drag to move frame"); 
     this.addMouseListener(new MouseAdapter() { 
      public void mouseDragged(MouseEvent e) { 
       Test.this.setLocation(e.getXOnScreen(), e.getYOnScreen()); 
       System.out.println(e); 
      } 
     }); 
     this.add(panel); 
     for (int i = 0; i < 4; i++) { 
      this.add(new JPanel()); 
     } 
    } 

    public static void main(String... args) { 
     Test test = new Test(); 
     test.setSize(750, 500); 
     test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 3 
     test.setVisible(true); 
    } 
} 
+0

Рассмотрите возможность использования [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer

+0

И для [примера] (http://stackoverflow.com/questions/16869877/how-to-remove-window-box-from-any-java-gui/16869893#16869893) и [пример] (http://stackoverflow.com/questions/30836201/jframe-wrong-location-with-ubuntu-unity/30836537#30836537) – MadProgrammer

+0

[_et al._] (http://stackoverflow.com/search ? tab = vote & q =% 5bjava% 5d% 20ComponentMover) – trashgod

ответ

1

Добавить MouseMotionListener для этой цели.

JPanel panel = new JPanel(); 
panel.setBackground(new Color(0)); 
panel.setToolTipText("Drag to move frame"); 

panel.addMouseMotionListener(new MouseMotionAdapter() { 
    public void mouseDragged(MouseEvent e) { 
     super.mouseDragged(e); 
     Test.this.setLocation(e.getXOnScreen(), e.getYOnScreen()); 
     System.out.println(e); 
    } 
}); 

this.setContentPane(panel); 
+0

Спасибо! Я, должно быть, только что сделал ошибку в вызове метода! – HyperNeutrino