2013-04-12 6 views
1

저는 JTable을 가지고 있습니다. 현재 나는 다음과 같은 코드가 있습니다JTable에 "입력 값"수신기를 추가하는 방법은 무엇입니까?

 table.addMouseListener(new MouseAdapter() { 
    public void mouseClicked(MouseEvent e) { 
    if (e.getClickCount() == 1) { 
    JTable target = (JTable)e.getSource(); 
    int row = target.getSelectedRow(); 

    int value = Integer.parseInt((String) table.getValueAt(row, 0)); 
    int x = 0,y=0; 
    if (row==1) {x=582;y=483;} else if (row==2) {x=221;y=575;} else if (row==3) {x=231;y=435;} 
    boundaryFill4(x, y, value, 50); 

    my.setIcon(new ImageIcon(buffered)); 

      } 
      } 
     }); 

을하지만 내 JTable의 새로운 값 사용자 유형으로 자동으로 업데이트 할 수 있도록해야합니다. 마우스 청취자는 내가 원하는 것을 정확하게하지 않습니다. 유저가 커서를 JTable 셀로 향하면 (자) 갱신됩니다. 문서에서 "입력 값 업데이트"리스너를 찾을 수 없습니다.

나는 keyListener를 사용할 수 있지만이 경우에는 "UPDATE"JButton을 추가해야하지만 JTable을 사용하면 JButton없이 자동으로 업데이트해야합니다.

세 번째 방법은 무한 업데이트 루프를 만드는 것입니다. while (true) {// update} 그러나 이것은 많은 컴퓨터 메모리를 필요로하며 효율적인 방법은 아닙니다.

누구든지 내 코드를 개선하는 방법을 권해 주시겠습니까? 아니면 누구든지 위의 MouseListener를 수정할 수 있습니까? 고맙습니다!

+0

사용자가 키를 입력 할 때마다 또는 사용자가 셀에 값 입력을 완료 할 때마다 수신기를 호출하게 하시겠습니까? – VGR

+0

사용자가 셀 – Buras

+0

에 값 입력을 완료하면 테이블 셀을 편집하는 방식이 아니라 다음과 같습니다. 이는 유형이 모두 완료된 시나리오를 의미합니다. 다시 한 걸음 물러나는 질문은 왜 커밋 - 온 - 타이핑이 필요한가? 마지막 코멘트를 다시 읽으면 혼란 스럽습니다. 사용자가 값을 커밋 할 때 업데이트하면 기본 동작이므로 정확히 무엇을 달성하고 싶습니까? – kleopatra

답변

2

How to Use Tables에 표시된대로 TableModel을 구성하는 방법을 선택하여 모든 셀을 편집 할 수 있습니다. 개별 셀을 제어하려면 TableModel에서 isCellEditable()을 무시합니다. 그래도 문제가 지속되면 질문을 수정하여 선택한 방법을 나타내는 sscce을 포함 시키십시오.

부록 : "입력"수신기가 있으면 궁금했습니다.

TableCellEditor (herehere)을 찾고있을 수 있습니다.

+0

감사합니다.하지만 JTable 자체에는 아무런 문제가 없습니다. 추가 ExcelAdapter 클래스가 있습니다. "Input"Listener가 있으면 궁금했습니다. 나는 "입력 키"리스너가 있다는 것을 알고 있지만, 런타임에서는이 업데이 트를 제공하지 않습니다. 현재 내 코드는 무한 루프를 사용하여 업데이트 중입니다. while (true) ... 아마도 가장 좋은 옵션은 아닙니다. – Buras

+0

오른쪽; 위의 셀 편집자에 대해 자세히 알아보십시오. – trashgod

관련 문제