Настройка заголовков столбцов в JTable
У меня есть следующая 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);
}
}
2 ответов
Не уверен, насколько это хорошо, но вы можете использовать DefaultTableModel вместо AbstractTableModel, который расширяет AbstractTableModel.
вот код для примера цели:
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];
}