【问题标题】:Vertical headers in JTable?JTable中的垂直标题?
【发布时间】:2010-06-27 20:59:32
【问题描述】:

有没有办法将 JTable 的列标题旋转 90º?

【问题讨论】:

    标签: java swing jtable


    【解决方案1】:

    【讨论】:

    • 这样做的一个问题是它不尊重操作系统主题:(
    【解决方案2】:

    这有点棘手。首先,您需要将 JTable 标头转换为 JLabels。就像

     ((JLabel)table.getTableHeader()
    

    然后旋转 JLabels。已经回复here on StackOverflow

    【讨论】:

      【解决方案3】:

      也许这有帮助,不过我还没有测试过:

      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

      【讨论】:

      • 那是针对单元格而不是标题的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多