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");

文字列[] title = {"オペレーティング システム", "人気度"};
オブジェクト[][] data =
{
{icon1, "Android: 76.6%"},
{icon2, "IOS: 19.7%"},
{icon3, "Windows Phone: 2.8%"},
{icon4, "BlackBerry OS: 1%"},
};

DefaultTableModel template = 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の場合、列には画像ではなくテキスト(ファイル名)が含まれます。たとえば、Androidのロゴを挿入する代わりに、JTableは"1.png".

から継承する独自のテンプレートを使用している場合 AbstractTableModel
class Model extends AbstractTableModel{
private Object[][] data;><>
private String[] title;

public Model(Object[][] data, String[] title){
this.data = data;
this.title = タイトル;
}

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

public int getColumnCount() {
return this.title.length;
}

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

public Object getValueAt(int row, int col) {
return this.data[row][col];
}
}
エディタとレンダラーの詳細については、Javaの公式Webサイトを参照してください:Editors and Renderers
Advertisement

AdBlock Detected

Please disable your ad blocker and refresh the window to use this website.