В основном у меня есть класс Task, расширяющий JComponent, каждая задача может перекрывать друг друга. Когда я нажимаю мышью на одну задачу, ее можно вывести на передний план, если она перекрывается другими задачами. Затем я могу перетащить задачу в другое место. Он отлично работал в Java 7, но не работал в Java 8. Все последующие события, такие как перетаскивание мыши и отпускание мыши после нажатия мыши, не будут запускаться в Java 8.
// Task.java
public class Task extends JComponent{
String _text;
public Task(String text){
_text = text;
new TaskListener(this);
}
}
// TaskListener.java
import java.awt.Container;
import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputAdapter;
public class TaskListener extends MouseInputAdapter {
private Task _task;
public TaskListener(Task task){
_task = task;
_task.addMouseListener(this);
_task.addMouseMotionListener(this);
}
public void mouseDragged(MouseEvent e) {
System.out.println("mouse dragged");
}
public void mouseClicked(MouseEvent e) {
System.out.println("mouse clicked");
}
public void mouseEntered(MouseEvent e) {
System.out.println("mouse entered");
}
public void mouseExited(MouseEvent e) {
System.out.println("mouse exited");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse moved");
}
public void mousePressed(MouseEvent e) {
System.out.println("mouse pressed");
// to get task to front in case it is overlapped by other tasks
// which will prevent follow up events from firing out in Java 8
Container parent = _task.getParent();
parent.remove(_task);
parent.add(_task, 0);
_task.repaint();
}
public void mouseReleased(MouseEvent e) {
System.out.println("mouse released");
}
}
Заранее спасибо.