2011-09-19 2 views
1

명령 목록이 포함 된 대화 상자가 있습니다. 표시된 경우 public Component getListFocusComponent(List list) 메서드의 레이블 렌더러와 DefaultListCellRenderer 파생 클래스의 public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) 메서드의 구성 요소는 모두 대화 상자의 너비를 차지하지 않습니다.포함하는 대화 상자와 명령 텍스트 사이에 공백이 없도록 각 List의 명령 구성 요소를 설정하는 방법은 무엇입니까?

레이블 및 선택 구성 요소를 포함하는 대화 상자의 모든 너비를 차지하는 방법은 무엇입니까? 여기

코드입니다 :

public class CMenu extends Dialog { 
    private String disp; 
    private List lCmds; 
    public static Command retCommand; 
    public CMenu(Command[] cmds, String disposition) 
    { 
     super(); 
     this.getStyle().setBorder(Border.createRoundBorder(10, 20)); 
     afficheCmd(cmds); 
     this.setScrollableY(false); 
     disp = disposition; 
    } 
    private void afficheCmd(Command[] cmds) 
    { 
     lCmds = new List(cmds); 
     lCmds.setListCellRenderer(new TickerRenderer()); 
     lCmds.setCommandList(true); 
     lCmds.setPreferredW(this.getPreferredW()); 
     lCmds.setFixedSelection(List.FIXED_NONE_CYCLIC); 
     ((DefaultListCellRenderer)lCmds.getRenderer()).setShowNumbers(false); 
     this.addComponent(lCmds); 
     lCmds.setSelectedIndex(0); 
     lCmds.requestFocus(); 
    } 
    protected void onShow() 
    { 
     lCmds.setSelectedIndex(0); 
     lCmds.requestFocus(); 
    } 
    public void affiche() 
    { 
     int top = Display.getInstance().getDisplayHeight() - lCmds.getHeight(); 
     if (disp.equalsIgnoreCase("gauche")) 
     { 
      this.show(top, 0, 0, 100, false); 
     } 
     else 
     { 
      this.show(top, 0, 100, 0, false); 
     } 
     lCmds.requestFocus(); 
     lCmds.setSelectedIndex(0); 
    } 
    protected void actionCommand(Command cmd) 
    { 
     retCommand = cmd; 
     this.dispose(); 
    } 
} 

class TickerRenderer extends DefaultListCellRenderer { 

    private DefaultListCellRenderer selectedRenderer = new DefaultListCellRenderer(false); 
    private List parentList; 

    public TickerRenderer() { 
     super(false); 
    } 

    public boolean animate() { 
     if (parentList != null && parentList.getComponentForm() != null) { 
      if (selectedRenderer.isTickerRunning()) { 
       if (selectedRenderer.animate()) { 
        parentList.repaint(); 
       } 
      } 
     } 
     return super.animate(); 
    } 

    public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) 
    { 
     if (isSelected) 
     { 
      (selectedRenderer.getListCellRendererComponent(list, value, index, isSelected)).getSelectedStyle().setBgTransparency(0); 
      (selectedRenderer.getListCellRendererComponent(list, value, index, isSelected)).getUnselectedStyle().setBgTransparency(0); 

      (selectedRenderer.getListCellRendererComponent(list, value, index, isSelected)).getSelectedStyle().setFgColor(16777215); 
      (selectedRenderer.getListCellRendererComponent(list, value, index, isSelected)).getUnselectedStyle().setFgColor(0); 

      if (index == list.getSelectedIndex()) 
      { 
       if (selectedRenderer.shouldTickerStart()) 
       { 
        if (!selectedRenderer.isTickerRunning()) 
        { 
         parentList = list; 
         list.getComponentForm().registerAnimated(this); 
         selectedRenderer.startTicker(UIManager.getInstance().getLookAndFeel().getTickerSpeed(), true); 
        } 
       } 
       else 
       { 
        if (selectedRenderer.isTickerRunning()) 
        { 
         selectedRenderer.stopTicker(); 
        } 
       } 
      } 
      return selectedRenderer; 
     } 
     else 
     { 
      return super.getListCellRendererComponent(list, value, index, isSelected); 
     } 
    } 
    public Component getListFocusComponent(List list) { 
     Label label = new Label(""); 
     label.getStyle().setBgTransparency(255); 
     label.getStyle().setBgColor(205388); 
     label.getStyle().setBorder(Border.createRoundBorder(5, 10, 16777215)); 
     return label; 
    } 
} 

답변

0

좋아, 여기있다 :

lCmds.getSelectedStyle().setPadding(0, 0, 0, 0); 
lCmds.getUnselectedStyle().setPadding(0, 0, 0, 0); 
this.getContentPane().getSelectedStyle().setPadding(0, 0, 0, 0); 
this.getContentPane().getUnselectedStyle().setPadding(0, 0, 0, 0); 
this.addComponent(lCmds); 
관련 문제