テーブルモデルを使用する次のJTableがあります。
http://s17.postimage.org/7zfh3l4lr/Screen_Shot_2012_03_10_at_15_11_31.png
A、B、C、Dなどを使用する代わりに、独自のテーブル名を定義するにはどうすればよいですか。これは私のコードです
これが私のテーブルモデルのコードです。フレームはこのテーブルモデルからオブジェクトを作成し、それをJFrameに表示します。
package uk.ac.kcl.inf._4css1pra.spreadsheet;
import Java.awt.Dimension;
import Java.util.HashMap;
import Java.util.Map;
import javax.swing.table.AbstractTableModel;
/**
* @author imdad
*
*/
public class Spreadsheet extends AbstractTableModel{
private Map data = new HashMap();
public int getColumnCount()
{
return 7;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount()
{
return 250;
}
public Object getValueAt(int row, int col)
{
return data.get(new Dimension(row, col));
}
public void setValueAt(Object data, int row, int col)
{
Dimension coord = new Dimension(row, col);
this.data.put(coord, data);
fireTableCellUpdated(row, col);
}
}
これがどれほど優れているかはわかりませんが、AbstractTableModelを拡張するAbstractTableModelの代わりに DefaultTableModel を使用できます。
これが例の目的のためのコードです:
パッケージjtable;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
public class TableIcon extends JFrame
{
public TableIcon()
{
ImageIcon backIcon = getImage("/images/bac.png");
ImageIcon exitIcon = getImage("/images/exit.png");
ImageIcon forwardIcon = getImage("/images/forward.png");
String[] columnNames = {"Picture", "Description"};
Object[][] data =
{
{backIcon, "BACK"},
{exitIcon, "EXIT"},
{forwardIcon, "FORWARD"},
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable( model )
{
// Returning the Class of each column will allow different
// renderers to be used based on Class
public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
}
};
ImageIcon icon = new ImageIcon(getClass().getResource("/images/appIcon.png"));
//model.addRow(new Object[]{icon, "Text"});
//model.addRow(data[0]);
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
}
private ImageIcon getImage(String path)
{
Java.net.URL url = getClass().getResource(path);
if (url != null)
return (new ImageIcon(url));
else
{
System.out.println(url);
return null;
}
}
public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e)
{
e.printStackTrace();
}
TableIcon frame = new TableIcon();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
出力は次のとおりです。
これを行うには、getColumnNameを実装する必要があります。
[〜#〜] api [〜#〜] を参照してください
private String[] colNames = new String[] {"first", "second", "third"};
@Override
public String getColumnName(int col) {
return colNames[col];
}