나는 끌어서 놓기로 작업하고 있습니다. 사용자는 목록에서 다른 곳으로 드래그해야합니다. 그러나 ListSelectionEvent
을받을 때 목록이 이동하므로 사용자가 선택을 변경하면 이 표시되면 예기치 않게 끌어서 놓기을 수행 할 수 있습니다.이동 목록으로 끌어서 놓기 처리
내 코드 :
import java.awt.*;
import javax.swing.*;
class Main {
public static void createGUI() {
JFrame f = new JFrame();
JList<String> list = new JList<>(new String[] { "Text A", "Text B" });
list.setFont(list.getFont().deriveFont(24f));
list.setDragEnabled(true);
// list.setTransferHandler(new TransferHandler() { /* ... */ });
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addListSelectionListener(e -> f.setLocation(f.getX(),
f.getY() + f.getHeight()));
list.setSelectedIndex(0);
f.add(list, BorderLayout.CENTER);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationByPlatform(true);
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Main::createGUI);
}
}
가 드롭 (예를 들어, 이클립스, 메모장 ++) 받아 일부 응용 프로그램 위에 넣어,이 응용 프로그램을 실행, 복제 및 선택을 여러 번 전환합니다.
Windows 7 및 JDK 1.8.0_5를 사용하고 있습니다.
시도했지만 해결 방법을 찾을 수 없습니다. 어떻게이 문제를 해결할 수 있습니까?
이 내 실제 응용 프로그램입니다 [별로 관련] :
그냥 최종 사용자의 생각을 충족 : 1) 난 정말 그런 식으로 동작하는 응용 프로그램을 싫어. 선택 이벤트에서 목록을 옮기는 요지는 무엇입니까? DnD를 사용하면 구성 요소가 조용한 상태로 유지되므로 시각적으로 이중 체크를하면 오른쪽 목록 항목을 드래그 할 수 있습니다. 2) 목록을 이동하면 예기치 않게 떨어지는 경향이 있습니다. 3) 그것은 단지 예일 뿐이지 만 두 가지 선택을 한 후에 프레임이 더 이상 내 화면에 표시되지 않는다는 것을 알고 있습니다. – dic19
@ dic19 힘내세요! 첫 번째와 세 번째 사항에 관한 업데이트를했습니다. – johnchen902
그래서 드래그 앤 드롭 효과를 원하지 않거나 어디에서 드롭을 수정 하시겠습니까? (또한, 나는 DnD 사용법의 이상한 구석을 발견했다고 생각합니다.) –