2013-07-11 4 views
1

나는이 단축키 또는 드래그 & 드롭를 통해 복사 잘라 붙여 넣기 작업을 할 수 있습니다 TransferHandlerJTable. 나는 JTable's TransferHandler (예 : canImport() 등)에서 유사한 작업을 호출해야하는 JTable 외부에 3 JButtons (복사 잘라 내기 붙여 넣기)이 있습니다.외부 JButton에서 JTable 동작을 호출하는 방법?

어떻게하면됩니까? 기본적으로

답변

2

모두들 고마워요.하지만 답변을 기다리는 동안 혼자서 답을 찾았습니다.

private void onAction(String actionStr) { 
    Action action = table.getActionMap().get(actionStr); 
    ActionEvent newAE = new ActionEvent(table, ActionEvent.ACTION_PERFOMED, actionStr); 
    action.actionPerfomed(newAE); 
} 

private void decorateButtons() { 
    copyButton.addActionListener(new ActionListener() { 
     public void actionPerfomed(ActionEvent ae) { 
      onAction("copy"); 
     } 
    }); 
    cutButton.addActionListener(new ActionListener() { 
     public void actionPerfomed(ActionEvent ae) { 
      onAction("cut"); 
     } 
    }); 
    pasteButton.addActionListener(new ActionListener() { 
     public void actionPerfomed(ActionEvent ae) { 
      onAction("paste"); 
     } 
    }); 
} 
+0

쿨 :-) 15 개 – kleopatra

2

recent question/answer에서와 매우 유사한 방법 : 그 액션의에서 테이블의 복사 동작을 찾을 원본과 그 위임 사용자 지정 작업에 싸서 버튼에 사용자 지정 작업을 사용

table.setDragEnabled(true); 
final Action copy = table.getActionMap().get("copy"); 
Action copyWithButton = new AbstractAction("copy") { 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     copy.actionPerformed(
       new ActionEvent(table, e.getID(), e.getActionCommand())); 
    } 
}; 
frame.add(new JScrollPane(table)); 
frame.add(new JButton(copyWithButton), BorderLayout.NORTH); 
frame.add(new JScrollPane(new JTextArea(5, 20)), BorderLayout.SOUTH); 
+0

답장을 보내 주셔서 감사합니다. – SeniorJD

관련 문제