2012-06-07 4 views
0

Netbeans의 디자인 모드에서 만든 JTable이 있습니다. 내 코드에서 나는 시작에 다음 코드 줄을 배치를 선택했다 :JTable 셀에 이미지를 추가하는 방법은 무엇입니까?

model = new TableModel(); 
tbShares.setAutoCreateColumnsFromModel(false); 
tbShares.setModel(model); 

tbShares 내 JTable의 개체입니다.

내 JTable에 포함 된 JFrame의

은 다음과 같다 : 그 화상을 표시 할 수 있도록

share manager

첫 번째 열, Object 형 (다른 두 문자열 임)로 설정 하였다. 이 코드는 이미지를로드하기 위해 입력 한 코드이지만 작동하지 않습니다 (list.add 부분, 나머지는 내 코드가 어떻게 구성되어 있는지에 대한 통찰력을 제공하는 것입니다). 이것은 AbstractTableModel의 확장입니다.

public void addRegister(String status, String name, String clients){ 
     ImageIcon activeStatus = new ImageIcon(CleanSheets.class.getResource("res/img/active.png")); 
     ImageIcon inactiveStatus = new ImageIcon(CleanSheets.class.getResource("res/img/inactive.png")); 
     list.add(new Register((status.equals("true") ? activeStatus : inactiveStatus), name, clients)); 
     this.fireTableDataChanged(); 
    } 

    class Register{ 
     Object status; 
     String name; 
     String clients; 

     public Register(Object status, String name, String clients) { 
      this.status = status; 
      this.name = name; 
      this.clients = clients; 
     } 
    } 

아마도 내가 지정한 폴더에서 이미지를 가져 오지만 실제로 이미지 대신 해당 열에 텍스트를 출력하는 것일 것입니다. 올바른 이미지를 표시하려면 어떻게해야합니까? 고맙습니다.

답변

2

당신은 TableCellRendererthis 짧은 기사를 (CleanSheets.class.getResource를 ("고해상도/IMG/active.png"))

1

이미지 아이콘 activeStatus = 새 이미지 아이콘을 읽으려고 다시 구현해야한다; ImageIcon inactiveStatus = 새 ImageIcon (CleanSheets.class.getResource ("res/img/inactive.png")); RendererMouse or Key events의 각이 Objects를 다시 때문에

  • , 지역 변수로 Icon/ImageIcon를 준비, 미친 기간

this.fireTableDataChanged()에서 한 무리의 이벤트가있다;

  • 은 추가 대한 정확한 알리미/fireTableRowsInserted()

대해합니다 ( TableModel으로 한 행을 추가)되어 테이블 셀이 문맥 fireTableCellXxx()

  • 가 있으며, 전체 JTable contens 없애기

    올바른 이미지를 표시하려면 어떻게해야합니까?

    • 내가 직접, 더 이상 변환 필요 선언 아무런 문제가, JTable가이 API에 Icon/ImageIcon 구현되지 않은 TableModelIcon/ImageIcon를 다음에 새 행을 추가 추가가 참조로

    • Icon/ImageIconMouse or Key events

  • +0

    좋아 형식을 변경하지 않을 경우 렌더러를 사용하지 않는, 나는 로컬 변수로 사람들을 넣었습니다. fireTableRowsInserted()는 행과 열을 요청합니다. 삽입 된 현재 행과 열은 어떻게 가져 옵니까? 그리고 ImageIcon에 관해서는, 나는 그 부분에서 길을 잃었습니다. 공유 아이콘을 업데이트해야하기 때문에 공유가 활성화/비활성화되면 이미지가 변경됩니다. – swiftcode

    +0

    API를 읽었습니까? 아닙니다. [this.fireTableRowsInserted (data.size() - 1, data.size() - 1);] (http://stackoverflow.com/a/6901508/714968) – mKorbel

    +0

    예, 구현은 벡터를 사용하여 데이터를 저장합니다. 데이터는 내 것과 관련이 없습니다. 나는 이것을 가지고 해냈다 .fireTableRowsInserted (tbShares.getRowCount(), tbShares.getColumnCount()); 그러나 그것은 내 목표가 아닙니다. 단지 이미지를 보여주고 싶습니다. – swiftcode