JTable에서 이미지 또는 아이콘 추가

JTable 클래스는 아이콘이나 이미지를 삽입하기 위한 메서드를 제공합니다. JTable은 적절한 렌더링을 선택할 수 있도록 테이블 열에 저장된 객체 유형을 지정해야 합니다. 이것은 getColumnClass(...):

public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
Java는 JTable의 렌더러를 지정했는지 여부를 결정하고, 그렇지 않으면 JTable이 템플릿을 호출하고 getColumnClass()  - 첫 번째 행의 셀 유형을 검색합니다. 그런 다음 변환이 저장된 데이터 유형 목록과 비교합니다. 이 목록은 JTable에 의해 시작되지만 추가하거나 편집할 수 있습니다. 렌더링에는 ImageIcon과 Icon.

다음 예제에서는 열에 이미지를 추가하는 방법을 보여 줍니다.

import javax.swing.*; 
import javax.swing.table.*;

public class Table_image extends JFrame
{
public Table_image()
{
ImageIcon icon1 = new ImageIcon("1.png");
ImageIcon icon2 = new ImageIcon("2.png");
ImageIcon icon3 = new ImageIcon("3.png");
ImageIcon icon4 = new ImageIcon("4.png");

문자열[] 제목 = {"운영 체제", "인기"};
Object[][] data =
{
{icon1, "Android: 76.6%"},
{icon2, "IOS: 19.7%"},
{icon3, "Windows Phone: 2.8%"},
{icon4, "BlackBerry OS: 1%"},
};

DefaultTableModel 템플릿 = new DefaultTableModel(data, Title);
JTable table = new JTable( template )
{
/*데이터 유형 자동 감지
*모든 열 중
*/
public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
};
//행 높이 변경
table.setRowHeight(100);
JScrollPane scrollPane = new JScrollPane( table);
getContentPane().add( scrollPane );
}

public static void main(String[] args)
{
Table_image frame = new Table_image();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
실행 후 결과:

jtable에 이미지 추가 아이콘 추가

getColumnClass 경우 열에는 이미지가 아닌 텍스트(파일 이름)가 포함됩니다. 예를 들어, JTable은 Android 로고를 삽입하는 대신 "1.png".

 에서 상속되는 고유한 템플릿을 사용하는 경우)를 표시합니다. AbstractTableModel, getColumnClass class.

class 모델은 AbstractTableModel{
private Object[][] data를 확장합니다.
개인 문자열[] 제목;

public Model(Object[][] data, String[] title){
this.data = data;
this.title = 제목;
}

public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}

public int getColumnCount() {
this.title.length를 반환합니다.
}

public int getRowCount() {
return this.data.length;
}

public Object getValueAt(int 행, int 열) {
return this.data[row][col];
}
}
편집기와 렌더러에 대한 자세한 내용은 공식 Java 웹 사이트 Editors and Renderers에서 확인할 수 있습니다.