[英]Remove border on JTable header
我有一個JTable
連接到JScrollPane
通過JScrollPane.setRowHeaderView(JTable)
。 看起來像這樣:
但我想刪除行號表周圍的邊框(3d效果):
它很厚。 任何想法如何刪除它?
public class SimpleJTableHeader extends JFrame {
public JTable table;
public SimpleJTableHeader() {
// CREATE A JTABLE
Object rowData[][] = { { "a" }, { "b" }, { "c" }, { "d" } };
Object columnNames[] = { "1" };
table = new JTable(rowData, columnNames);
table.setRowHeight(20);
JScrollPane scrollPane = new JScrollPane(table);
// ADD ROW NUMBERS TO THE TABLE
scrollPane.setRowHeaderView(getHeaderTable());
// SHOW TABLE
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
public JTable getHeaderTable() {
final AbstractTableModel model = new AbstractTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
@Override
public Object getValueAt(int row, int column) {
return table.convertRowIndexToModel(row);
}
@Override
public int getRowCount() {
return table.getRowCount();
}
};
JTable headerTable = new JTable(model);
headerTable.setPreferredScrollableViewportSize(new Dimension(40, 0));
headerTable.setRowHeight(20);
headerTable.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable x, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component component = table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table, value, false, false, -1, -2);
component.setBackground(new Color(250, 250, 250));
return component;
}
});
return headerTable;
}
public static void main(String args[]) {
new SimpleJTableHeader();
}
}
您可以將getTableCellRendererComponent()調用返回的組件轉換為JComponent ,然后根據需要設置邊框:
headerTable.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable x, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JComponent component = (JComponent)table.getTableHeader().getDefaultRenderer().getTableCellRendererComponent(table, value, false, false, -1, -2);
component.setBackground(new Color(250, 250, 250));
component.setBorder(BorderFactory.createEmptyBorder());
return component;
}
});
無論如何,你可能想看看Rob Camick的RowNumberTable這個很好的例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.