이것은 Swing에서 비교적 기본적인 개념입니다.
How to Use Key Bindings을 살펴볼 필요가 있습니다. 기본적으로
...
InputMap im = table.getInputMap(JTable.WHEN_FOCUSED);
ActionMap am = table.getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "delete");
am.put("delete", new AbstractAction() {
public void actionPerformed(ActionListener listener) {
deleteButton.doClick();
}
});
UPDATE
당신이 그것을 사용하지 않도록 설정할 수 있도록 테이블 삭제에 대한 "기본"조치가 없습니다. 주요 문제는 표 모델 및 셀 편집기에서 isCellEditable
에 있습니다. 나는 대개이 상황이 대부분의 상황에서 사실로 돌아 오도록 설정했습니다.
내 Mac에서 테스트하는 동안 VK_DELETE
을 사용하지 않았지만 VK_BACKSPACE
을 대신 사용했습니다. 나는 그것을 설정하면, 그것은 괜찮 았는데
... 맥 OS 1.7.5에
테스트, JDK 7, 윈도우 7 업데이트]
final MyTestTable table = new MyTestTable(new MyTableModel());
table.setShowGrid(true);
table.setShowHorizontalLines(true);
table.setShowVerticalLines(true);
table.setGridColor(Color.GRAY);
InputMap im = table.getInputMap(JTable.WHEN_FOCUSED);
ActionMap am = table.getActionMap();
Action deleteAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("I've being delete..." + table.getSelectedRow());
}
};
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "Delete");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), "Delete");
am.put("Delete", deleteAction);
setLayout(new BorderLayout());
add(new JScrollPane(table));
, JDK 6 개 & 7 - 작품 괜찮음
무엇이 테이블에서 선택된 행을 삭제하지 못하도록합니까? –
SO는 코드 생성기가 아니므로 더 나은 도움을 위해 [SSCCE] (http://example.com) 게시, 설명 된 문제 설명, 다른 사용자 질문과 중복 가능 – mKorbel
일반적인 접근 방법이 여기에 나와 있습니다 (http : //stackoverflow.com/a/13240106/230513). – trashgod