JTable에서 이미지 또는 아이콘 추가
JTable 클래스는 아이콘이나 이미지를 삽입하기 위한 메서드를 제공합니다. JTable은 적절한 렌더링을 선택할 수 있도록 테이블 열에 저장된 객체 유형을 지정해야 합니다. 이것은 getColumnClass(...):public Class getColumnClass(int column)Java는 JTable의 렌더러를 지정했는지 여부를 결정하고, 그렇지 않으면 JTable이 템플릿을 호출하고 getColumnClass() - 첫 번째 행의 셀 유형을 검색합니다. 그런 다음 변환이 저장된 데이터 유형 목록과 비교합니다. 이 목록은 JTable에 의해 시작되지만 추가하거나 편집할 수 있습니다. 렌더링에는 ImageIcon과 Icon.
{
return getValueAt(0, column).getClass();
}
다음 예제에서는 열에 이미지를 추가하는 방법을 보여 줍니다.
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);
}
}
getColumnClass 경우 열에는 이미지가 아닌 텍스트(파일 이름)가 포함됩니다. 예를 들어, JTable은 Android 로고를 삽입하는 대신 "1.png".
에서 상속되는 고유한 템플릿을 사용하는 경우)를 표시합니다. AbstractTableModel, getColumnClass class.
class 모델은 AbstractTableModel{편집기와 렌더러에 대한 자세한 내용은 공식 Java 웹 사이트 Editors and Renderers에서 확인할 수 있습니다.
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];
}
}