Я пытаюсь отобразить JLabel
внутри JTable
путем переопределения метода getColumnClass
как этотДисплей JLabel внутри JTable
JLabel myLabel = new JLabel("ok");
String[] columnNames = {"","",""};
Object[][] data =
{
{myLabel, myLabel, myLabel},
{myLabel, myLabel, myLabel},
{myLabel, myLabel, myLabel},
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table = new JTable(model)
{
public Class getColumnClass(int column)
{
return JLabel.class;
}
};
Но вместо этого он показывает что-то вроде этого (хэш-код?)
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=ok,verticalAlignment=CENTER,verticalTextPosition=CENTER]
В чем проблема и как это исправить?
EDIT
код работает отлично, если использовать ту же логику для отображения ImageIcon
ImageIcon myLabel = new ImageIcon(path); // ignore the variable name
и изменения в getColumnClass
public Class getColumnClass(int column)
{
return ImageIcon.class;
}
прочитал главу о рендерерах/редактора в свинге учебнике, чтобы понять, как они работают :-) И подчеркивая ответ @ mKorbel повторением: ** не ** хранить компоненты в таблице – kleopatra
Спасибо, ребята, посмотрим на учебник. –