问题
I'm trying to hide the grid lines of a JTable but with no results. Even trying to change the color of the grid lines does not work. Here is my code:
// build the table
tableView = new JTable(ttm);
//Specifify the selection Listener and model
listSelectionModel = tableView.getSelectionModel();
listSelectionModel.addListSelectionListener(new SharedListSelectionHandler(tableView));
tableView.setSelectionModel(listSelectionModel);
//Add a mouse listener to our table and implement double click event
tableView.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
//If double click in a message show the Message Details window
if (e.getClickCount() == 2){
showMessageDetail();
}
}
} );
// set my own renderer
CustomCellRenderer mtr = new CustomCellRenderer();
tableView.setDefaultRenderer(Object.class, mtr);
// table properties
tableView.setGridColor(Color.black);
tableView.setShowGrid(false);
//tableView.setShowVerticalLines(false);
//tableView.setShowHorizontalLines(false);
tableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//hide header
tableView.setTableHeader(null);
// hide the id column
String columName = tableView.getColumnName(TableModel.COLUMN_ID);
tableView.getColumn(columName).setMaxWidth(0);
tableView.getColumn(columName).setMinWidth(0);
tableView.getColumn(columName).setWidth(0);
//load the messages in the table
loadMessages();
//adjust column width
tableView = autoResizeColWidth(tableView, ttm);
public class CustomCellRenderer extends JPanel implements TableCellRenderer {
/**
* First gradient color
*/
private static final Color COLOR_1 = new Color(255, 255, 255, 200);
/**
* Second gradient color
*/
private static final Color COLOR_2 = new Color(255, 0, 255, 200);
/**
* Controls gradient direction
*/
private static final float SIDE = 50;
private GradientPaint gradientPaint = new GradientPaint(0, 0, COLOR_1, SIDE, SIDE, COLOR_2, true);
private JLabel label = new JLabel();
public CustomCellRenderer() {
setOpaque(true);
setLayout(new BorderLayout());
add(label, BorderLayout.CENTER);
label.setHorizontalAlignment(SwingConstants.CENTER);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
label.setText(value.toString());
return this;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(gradientPaint);
g2.fillRect(0, 0, getWidth(), getHeight());
}
}
White grid lines are always being drawn. I'm stuck here...
Do I have to implement a custom Viewport to get rid of this?
Thanks in advance, Alex
回答1:
you have to set two thingies
- disable grid showing
- zero row/column intercell spacing
In code:
table.setShowGrid(false);
table.setIntercellSpacing(new Dimension(0, 0));
Or use JXTable (from the SwingX project) which does it for you:
xTable.setShowGrid(false, false);
回答2:
just jTable1.setShowHorizontalLines(false); or jTable1.setShowVerticalLines(false); or you can use the 2 option
jTable1.setShowHorizontalLines(false);
jTable1.setShowVerticalLines(false);
来源:https://stackoverflow.com/questions/8996200/how-to-hide-grid-lines-in-jtable