我有以下TableCellRenderer
(NOT DefaultTableCellRenderer
),讓我跳過線在我JTable
的細胞:設置JTable中列水平對齊,而無需使用DefaultTableCellRenderer
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;
public class MyCellRenderer extends JTextArea implements TableCellRenderer {
Color highlightBackground = (Color) UIManager.get("Table.selectionBackground");
public MyCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((String) value); //or something in value, like value.getNote()...
setSize(table.getColumnModel().getColumn(column).getWidth(), getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
table.setRowHeight(row, getPreferredSize().height);
}
if (table.isRowSelected(row)) {
this.setBackground(highlightBackground);
} else {
this.setBackground(Color.WHITE);
}
return this;
}
}
我只是想改變的水平對齊方式這個渲染器。 (意思是細胞的文字會在中間或者右邊,現在就剩下了)。
以下是我用這個的TableCellRenderer:
Table.getColumnModel().getColumn(1).setCellRenderer(new MyCellRenderer());
你所說的渲染器的水平對齊是什麼意思?你的意思是細胞的排列? – SomeDude
沒有必要調用'setSize','JTable'會自己做。更改對齊到什麼? – MadProgrammer