0
기본적으로 Task 클래스가 JComponent를 확장하고 각 작업이 서로 겹칠 수 있습니다. 하나의 작업을 마우스로 누르면 다른 작업과 겹치면 앞에 놓을 수 있습니다. 그런 다음 다른 위치로 끌어서 놓을 수 있습니다. 그것은 마우스와 같은 모든 후속 이벤트를 끌고 자바 7에서 잘 작동하지만, 자바 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");
}
}
자바 8에서 해고되지 않습니다 이후에 출시.