JTable
셀에 여러 줄을 래핑해야하는 이 있습니다.Jtable에서 JTable Cellrenderer를 호출 할 수 없습니다.
public class MultiLineTableCellRenderer
extends JTextArea implements TableCellRenderer {
/**
*
*/
private static final long serialVersionUID = 1L;
public MultiLineTableCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
setText(value.toString());//or something in value, like value.getNote()..
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSize(table.getColumnModel().getColumn(column).getWidth(),
getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
table.setRowHeight(row, getPreferredSize().height);
}
return this;
}
}
내가 만들고 내가 동적으로 데이터베이스
DefaultTableModel model = (DefaultTableModel)cnr_DATA.getModel();
removeAllCurrentRows (모델)에서의 JTable의 내용을 업데이트하고 myjtable(cnr_DATA)
MultiLineTableCellRenderer r = new MultiLineTableCellRenderer();
cnr_DATA.setDefaultRenderer(String.class, r);
cnr_DATA.setModel(new DefaultTableModel(data,columns){
public Class getColumnClass(int col){
return String.class;
};
});
에 대한 default cell renderer
등이 cell renderer
을 할당하고;
Vector<DocumentRow> data =
RecycleSQL.readRecycledDocuments();//this line returning vector of objects
for(DocumentRow object:data)
model.addRow(new string[]{object.getFilename(),
object.getTitle(),object.getLastTouched()
,object.getLastTouchedBy()});
model.setRowCount(data.size());
cnr_DATA.revalidate();
내 문제는 mycellrenderer
가 호출되지 않는 데이터를 포장되지 않는 것입니다. 어떤 사람은 JTable
의 내용을 업데이트 한 후 어떻게 부르는지 조언 해주십시오. 제안에 따라 코드를 수정 한 후에 Madprogrammer의 제안과 호버
따른
는업데이트. 이제 cellrenderer
이 호출되었지만 행 높이를 기본값으로 쉬고 있습니다. 이 행의 높이를 설정 한 후 올바르게 다시 기본값을 쉬고 있음을 의미 디버그 문
[2013-08-02 01:20:53,335] [AWT-EventQueue-0] DEBUG MultiLineTableCellRenderer - setting row height 3 128
[2013-08-02 01:20:53,335] [AWT-EventQueue-0] DEBUG MultiLineTableCellRenderer - setting row height 3 16
의 로그입니다
'setModel '호출이 기본 편집기를 재설정하고 열 모델을 변경하는 것으로 의심됩니다. 그 진술을 교환하고 싶을 수도 있습니다 – MadProgrammer
미안하지만 당신이 무엇을 바꾸고 싶습니까 (스왑) – Ashish
모델이 먼저 설정되고 렌더러가 – MadProgrammer