我试图使我的JTable
头的背景具有渐变。
这可以很好地使用代码:
String[] colName = new String[] { "#", "Location", "Name" ,"Source", "System", "Hits", "Current", "Time" };
Object[][] products = new Object[][] {
};
dtm = new DefaultTableModel(products, colName) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table = new JTable( dtm );
table.setRowHeight(32);
table.getTableHeader().setReorderingAllowed(false);
table.setDefaultRenderer(Object.class, new VisitorRenderer());
table.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 12));
table.getColumnModel().getColumn(0).setMinWidth(5);
table.getColumnModel().getColumn(1).setMinWidth(50);
table.getColumnModel().getColumn(2).setMinWidth(5);
table.getColumnModel().getColumn(3).setMinWidth(5);
table.getColumnModel().getColumn(4).setMinWidth(5);
table.getColumnModel().getColumn(5).setMinWidth(3);
table.getColumnModel().getColumn(6).setMinWidth(230);
table.getColumnModel().getColumn(7).setMinWidth(3);
final JTableHeader header = table.getTableHeader();
header.setPreferredSize(new Dimension(100, 37));
header.setDefaultRenderer(new DefaultTableCellHeaderRenderer() {
private Object selectedColumn;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0,
new java.awt.Color(237, 237, 237), 0, getHeight(),
new java.awt.Color(222, 222, 222));
g2d.setPaint(gp);
g2d.fillRect(0, 0, getWidth(), getHeight());
}
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
DefaultTableCellHeaderRenderer rendererComponent = (DefaultTableCellHeaderRenderer) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (selectedColumn == value) {
rendererComponent.setBorder(BorderFactory.createCompoundBorder(rendererComponent.getBorder(), BorderFactory.createLineBorder(Color.red, 1)));
rendererComponent.setHorizontalAlignment(SwingConstants.LEFT);
} else {
rendererComponent.setBorder(BorderFactory.createCompoundBorder(rendererComponent.getBorder(), BorderFactory.createEmptyBorder(0, 5, 0, 0)));
rendererComponent.setHorizontalAlignment(SwingConstants.CENTER);
}
if (column == 0) {
rendererComponent.setForeground(header.getForeground());
} else {
rendererComponent.setForeground(header.getForeground());
}
return rendererComponent;
}
});
然而,由于某种原因,我看不到我的边框和文本,似乎文本也应用了渐变?
我希望文本为黑色,各栏之间有彩色边框。有什么想法吗?
类,sun.swing.table.DefaultTableCellHeaderRenler
,不是一个好的选择。相反,获取一个引用,并将其包装在TableCellRenler
的实现中,如图所示。另请参见Darryl Burke的Default Table Header单元格渲染器。
问题内容: 我正在跟踪发现的一些代码,(是的,我知道它是如何工作的)它来自这里:代码链接 我想做的是如果单元格值设置为“黄色”,则设置单元格前景色 这是我的代码: 和单元格渲染器 问题是,如果我将任何单元格值设置为“黄色”,它就不会改变 提前致谢! 问题答案: 您的渲染器曾经使用过吗?您将其设置为包含String的单元格的默认渲染器,但是是否重载了模型的方法,以便它知道某些单元格包含String
我已经建立了一个,并使其包含18列。最初,当它是13列时,它非常适合JTable,并且没有撕裂。然而,一旦我使它包含18个表,并将自动调整大小设置为关闭,当我使用水平滚动条尝试滚动其他列时,JTable的撕裂开始发生,如图所示: Netbeans还开始向我发送大量错误消息,如: 为什么会这样?这个问题有什么解决办法吗?谢谢 真抱歉!下面是用于初始化表的代码。希望会有用!
图片
在 Hexo 中,有两个方法可用于渲染文件或字符串,分别是非同步的 hexo.render.render 和同步的 hexo.render.renderSync,这两个方法的使用方式十分类似,因此以下仅以非同步的 hexo.render.render 为例。 渲染字符串 在渲染字符串时,您必须指定 engine,如此一来 Hexo 才知道该使用哪个渲染引擎来渲染。 hexo.render.rend
问题内容: 假设我有以下JTable,只要按下一个按钮,就会显示该JTable: 我想呈现 最初 对JCheckBox 为真的单元格,以及所有 最初为 false的所有单元格不显示任何内容(无JCheckBox)。用户可以选中或取消选中最初为真的单元格中的JCheckBoxes,这会对我创建的图表有所帮助。 现在,我的单元格渲染器在所有单元格中显示JCheckBoxes,包括最初为false的单元
6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren