2013-02-25 3 views
4

Как мне сделать мое дерево клетка заполняет ширину моей JTree:Как заставить мой TreeCellRenderer заполнить мой JTree?

JTree tree = new JTree(); 
tree.setCellRenderer(new TreeCellRenderer() { 
    @Override 
    public Component getTreeCellRendererComponent(JTree tree, Object value, 
     boolean selected, boolean expanded, boolean leaf, int row, 
     boolean hasFocus) { 
      // TODO: How do I make this panel fill the width 
      // of the JTree? 
      JPanel panel = new JPanel(); 
      panel.add(new JLabel("ITEM"); 
      return panel; 
     } 
}); 
add(tree); 

ответ

4
  • JPanel panel = new JPanel();, JPanel является контейнером,

  • пустого JPanel по умолчанию возвращает zero Dimension,

  • только пустой JPanel (только AFAIK) возвращает 10px в BorderLayotu, в случае размещения JPanels на север, юг, запад, юг областях, затем создал очень хороший 10pxs EmptyBorders

  • должны переопределить getPreferredSize для JPanel, одни и те же способы, как не требуется для живописи в свинг

  • не знаю, почему-то причинам вы поставил JPanel в Renderers JComponent в JTree, может быть, есть/есть еще один способ (ы), уверен, что для лучшей помощи рано опубликовать SSCCE

+0

Я сожалею mKorbel, я имел в виду, чтобы оставить JPanel пустым, но есть на самом деле количество ком в нем. Я просто не включил их в свой пост - я сделаю это более ясным. – sdasdadas

+0

Концепция Renderers одинакова для JComboBox, JList, JTable, JTree, return PreferredSize поступает из JPanel, но ваш вопрос о заполняемых пакетах JViewport Dimension ???, о том, чтобы связать JPanel как Renderer с Rectangle, который возвращает JViewport ??? – mKorbel

+0

Извинения за отложенный ответ; вы были правы, и настройка getPreferredSize работала для меня. – sdasdadas