- table.getColumnModel().getColumn(i).setCellRenderer(new DefaultTableCellRenderer() {
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- String v = (String) value;
- String[] vs = v.split("\n");
-
- JPanel p = new JPanel(new GridLayout(vs.length, 1)) {
- @Override
- public void setForeground(Color fg) {
- for (int i = 0; i < getComponentCount(); i++) {
- getComponent(i).setForeground(fg);
- }
- super.setForeground(fg);
- }
-
- @Override
- public void setBackground(Color bg) {
- for (int i = 0; i < getComponentCount(); i++) {
- getComponent(i).setBackground(bg);
- }
- super.setBackground(bg);
- }
- };
-
- // 內容
- for (String s : vs) {
- JLabel l = new JLabel(s, JLabel.LEFT);
- l.setOpaque(true);
- p.add(l);
- }
- // 列高
- table.setRowHeight(row, table.getRowHeight() * vs.length);
-
- // 顏色設定
- p.setOpaque(true);
- p.setBackground(Color.white);
-
- // 變更背景及字體 顏色同, 同時變更內部元件的顏色
- if (isSelected) {
- p.setBackground(UIManager.getColor("Table.selectionBackground"));
- p.setForeground(UIManager.getColor("Table.selectionForeground"));
- }
-
- if (hasFocus) {
- p.setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
-
- if (table.isCellEditable(row, column)) {
- p.setForeground(UIManager.getColor("Table.focusCellForeground"));
- p.setBackground(UIManager.getColor("Table.focusCellBackground"));
- }
- } else {
- p.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
- }
-
- return p;
- }
- });