我想在我的JTable派生类的标题中设置标签的垂直对齐方式。
我知道 setVerticalAlignment(SwingConstants.BOTTOM);
我的标题比字体高得多,我想将文本 放在 垂直中心的 下方 。
如何做到这一点而又不至于压倒一切paint()
?
谢谢
一种方法是设置Renderer
,TableHeader
默认情况下返回JLabel
,例如
final TableCellRenderer tcrOs = myTable.getTableHeader().getDefaultRenderer();
myTable.getTableHeader().setDefaultRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JLabel lbl = (JLabel) tcrOs.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
lbl.setForeground(AppVariables.textColor);
lbl.setBorder(BorderFactory.createCompoundBorder(lbl.getBorder(),
BorderFactory.createEmptyBorder(0, 5, 0, 0)));
lbl.setHorizontalAlignment(SwingConstants.LEFT);
if (isSelected) {
lbl.setForeground(Color.red);
lbl.setBackground(Color.lightGray);
} else {
lbl.setForeground(Color.blue);
lbl.setBackground(Color.black);
}
return lbl;
}
});
问题内容: 基本上,我有一个JTable包含具有右对齐单元格但左对齐标题的列,这看起来确实很糟糕。我想在不更改标题的“外观”的情况下,将这些列的标题右对齐。 谢谢 问题答案: 这是修改表格的的另一种方法。对于此用法,这不是严格必要的,但可以最大程度地减少对UI委托外观的影响。 典型用法: 自定义标题渲染器:
问题内容: 使用以下示例代码: 我们想用上面的代码在column_names中设置带有列名的标头,但是它不起作用。尽管正在创建表,但标题不可见。 问题答案: 为了能够看到标题,您应该将表放在JScrollPane中。 或者,如果您确实不希望使用滚动窗格,则可以将tableHeader专门添加到面板中(但是:通常,您不希望这种行为):
如果只是将JTable添加到JPanel中,默认情况下它不会显示头部。您应该将该表传递给JScrollPane的构造函数,或者使用该表作为参数调用JScrollPane。那么实际上,是什么使列标题可见呢?它是JScrollPane(和方法)内部呈现的一部分吗? 最初我认为JScrollPane使用它的来实现这一点,但它没有(将null传递给这个方法,表仍然会显示头部)。
我根据本教程制作了一个联系表单:http://blog.teamtreehouse.com/create-ajax-contact-form 我在我的服务器上使用的是PHP5.3.10-1Ubuntu3.4版本,但我遇到了的问题,这正是上面链接中的示例教程所使用的。我读过仅适用于PHP5.4。因此,我转而使用。 我的表单工作得很好,提交时显示成功消息,而不是使用时出现错误,但我的PHP不是那么好,
我试图使我的头的背景具有渐变。 这可以很好地使用代码: 然而,由于某种原因,我看不到我的边框和文本,似乎文本也应用了渐变? 我希望文本为黑色,各栏之间有彩色边框。有什么想法吗?
问题内容: 我需要在JTable标头中包含多个可编辑的行,以便同一标头列可以同时包含JTextField和JButton。 我发现了如何实现可编辑的标题单元以及如何拆分标题单元。但是事实证明,这些方法有些不同,我需要将它们融合为一个。 是否已经开发了多个可编辑的JTable标头行解决方案,所以我不需要重新发明自行车了? 到目前为止,我发现了什么: 可编辑标头行代码,摘自:http : //www.