我有这个代码,其中我将字符串数据动态插入JTable
作为Object
类型数据。我想将插入到表格的数据与中心对齐。这是我的代码
private String[] COLUMNS = {"FAMILY MEMBERS", "STAR (NAKSHATRA)"};
private DefaultTableModel model = new DefaultTableModel(COLUMNS, 0){
public boolean isCellEditable(int row, int column) {
return false;
}
};
private JTable table = new JTable(model);
public void addRow(String memb, String star) {
Object[] row = new Object[2];
row[0]=memb;
row[1]=star;
model.addRow(row);
}
我在这个论坛上搜索了类似的查询但是徒劳无功。任何暗示都将受到赞赏。
答案 0 :(得分:1)
这个完整的example显示了如何使用DefaultTableCellRenderer
来影响setHorizontalAlignment(JLabel.CENTER)
。另请参阅本教程部分,了解如何选择renderers。
答案 1 :(得分:0)
由于值是字符串开头,默认渲染器只是以任何方式调用对象上的.toString
,为什么不使用String[]
而不是Object[]
?
要回答您的问题,请继承javax.swing.table.DefaultTableCellRenderer
(子类JLabel
)并在那里设置对齐(setHorizontalTextPosition
)。然后将该渲染器适当地分配给表,列或单元格。
对多个单元格使用单个渲染器。呈现值后,表将安全地重用它。
答案 2 :(得分:0)
// Try this .....
private String[] COLUMNS = {"FAMILY MEMBERS", "STAR (NAKSHATRA)"};
private DefaultTableModel model = new DefaultTableModel(COLUMNS, 0)
{
public boolean isCellEditable(int row, int column)
{
return false;
}
};
private JTable table = new JTable(model);
// To center all columns for string data
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment( JLabel.CENTER );
table.setDefaultRenderer(String.class, centerRenderer);
public void addRow(String memb, String star) {
Object[] row = new Object[2];
row[0]=memb;
row[1]=star;
model.addRow(row);
}
// Also you can use like this..
for(int i=0;i<COLUMNS;i++){
table.getColumnModel().getColumn(i).setCellRenderer( centerRenderer );
}