2011-11-14 7 views

答えて

3

スタンドアロンのJLabelではサポートされていません。だから、ラベル

  • 上のアイコンの領域が最初の場合は、テーブル
  • におけるレンダリングコンポーネント領域をゲットする

    • を解決するには、2つの問題がある、あなたは再レイアウトすることができますラベルはアイコンが含まれている四角形のホールドを取得するには(これはBasicLabelUIが内部的に何をするかです):

      protected String layoutCL(
          JLabel label,     
          FontMetrics fontMetrics, 
          String text, 
          Icon icon, 
          Rectangle viewR, 
          Rectangle iconR, 
          Rectangle textR) 
      { 
          return SwingUtilities.layoutCompoundLabel(
           (JComponent) label, 
           fontMetrics, 
           text, 
           icon, 
           label.getVerticalAlignment(), 
           label.getHorizontalAlignment(), 
           label.getVerticalTextPosition(), 
           label.getHorizontalTextPosition(), 
           viewR, 
           iconR, 
           textR, 
           label.getIconTextGap()); 
      } 
      

      は、細胞rectanglのテーブルを頼みますマウス位置でE、及びアイコンラベルが追加されると仮定すると(及び充填)ヒットするかどうかをチェックセル

    +1

    int row = table.rowAtPoint(e.getPoint()); int column = table.columnAtPoint(e.getPoint()); Rectangle cellRect = table.getCellRect(row, column, false); JLabel label = (JLabel) table.prepareRenderer(table.getRenderer(row, column), row, column); Rectangle viewR = new Rectangle(0, 0, cellRect.width, cellRect.height); Rectangle iconR = new Rectangle(); Rectangle textR = new Rectangle(); // call method above and do some math to translate the mouseEvent relative to the cell 
    +1この関連[例](http://stackoverflow.com/questions/3597550/ideal-method-to-truncate-a-string-by-省略記号/ 3597688#3597688)は、ジオメトリを検査する呼び出しをインターセプトします。 – trashgod

    関連する問題