У меня есть таблица с тремя столбцами, первая колонка является специальной и содержит флажок вместо заголовка.Пользовательский Jtable Header имеет разную компоновку, тогда другие заголовки
Проблема заключается в том, что макет (принадлежность) заголовка флажка отличается от других заголовков. Может ли кто-нибудь помочь?
Кодекс:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
public class JTableHeaderCheckBox
{
Object colNames[] = {"", "String", "String"};
Object[][] data = {};
DefaultTableModel dtm;
JTable table;
public void buildGUI()
{
dtm = new DefaultTableModel(data,colNames);
table = new JTable(dtm);
for(int x = 0; x < 2; x++)
{
dtm.addRow(new Object[]{new Boolean(false),"Row "+(x+1)+" Col 2","Row "+(x+1)+" Col 3"});
}
JScrollPane sp = new JScrollPane(table);
TableColumn tc = table.getColumnModel().getColumn(0);
tc.setCellEditor(table.getDefaultEditor(Boolean.class));
tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc.setHeaderRenderer(new CheckBoxHeader());
JFrame f = new JFrame();
f.getContentPane().add(sp);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main (String[] args)
{
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new JTableHeaderCheckBox().buildGUI();
}
});
}
}
class CheckBoxHeader extends JCheckBox implements TableCellRenderer {
protected CheckBoxHeader rendererComponent;
protected int column;
public CheckBoxHeader() {
rendererComponent = this;
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setColumn(column);
return rendererComponent;
}
protected void setColumn(int column) {
this.column = column;
}
public int getColumn() {
return column;
}
}
Выход странно:
UPDATE:
Что я хочу:
- Центр выровнять флажок в заголовке
- Если вы обратите внимание, то обратите внимание на фон флажка Header (, кажется, появляются на внутренней) отличается от 2 других заголовков (они, кажется, выскакивают)
Я проверю это завтра, так как я сейчас не работаю :) –
Хорошо, теперь граница прекрасна. Как установить ** выравнивание по центру ** в заголовке таблицы? Если вы ответите на это, я приму ваш ответ. –
Я изменил ваш ответ, чтобы добавить решение для выравнивания по центру. Спасибо за Ваш ответ –