【发布时间】:2010-06-27 20:59:32
【问题描述】:
有没有办法将 JTable 的列标题旋转 90º?
【问题讨论】:
有没有办法将 JTable 的列标题旋转 90º?
【问题讨论】:
查看 Darryl 的Vertical Table Header Cell Renderer。
【讨论】:
这有点棘手。首先,您需要将 JTable 标头转换为 JLabels。就像
((JLabel)table.getTableHeader()
然后旋转 JLabels。已经回复here on StackOverflow
【讨论】:
也许这有帮助,不过我还没有测试过:
class RotatedTableCellRenderer extends JLabel implements TableCellRenderer {
protected int m_degreesRotation = -90;
public RotatedTableCellRenderer(int degrees) {
m_degreesRotation = degrees;
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
try {
this.setText(value.toString());
} catch(NullPointerException ne) {
this.setText("Nullvalue");
}
return this;
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setClip(0,0,500,500);
g2.setColor(new Color(60,179,113));
g2.setFont(new Font("Arial",Font.BOLD,12));
AffineTransform at = new AffineTransform();
at.setToTranslation(this.getWidth(), this.getHeight());
g2.transform(at);
double radianAngle = ( ((double)m_degreesRotation) / ((double)180) ) * Math.PI;
at.setToRotation(radianAngle);
g2.transform(at);
g2.drawString(this.getText(), 0.0f, 0.0f);
}
}
这不是我自己的,取自here
【讨论】: