Как нарисовать горизонтальную линию в ЮЖНОЙ позиции BorderLayout Контейнера? - PullRequest
1 голос
/ 28 сентября 2011

У меня есть контейнер с макетом BorderLayout. Я хочу нарисовать горизонтальную линию в положении ЮГ, потому что этот Контейнер отрисовывается несколько раз, поэтому я хочу разграничить каждую горизонтальной линией.

Вот код:

tList = new List(tModel);
tList.setListCellRenderer(new CTable(listclient));

public class CTable extends Container implements ListCellRenderer {

  private Label pic = new Label("");
  private Container cnt;
  private Label name = new Label("");
  private Label credit = new Label("");
  private ligneHorizontal ligne;

  private Font fontLibelle = (MenuPrincipalForm.r).getFont("FontTextFieldBold");

  private Label focus = new Label("");

  public CTable(Vector valeur)
  {
      setLayout(new BorderLayout());
      addComponent(BorderLayout.WEST, pic);
      cnt = new Container(new BoxLayout(BoxLayout.Y_AXIS));
      name.getStyle().setBgTransparency(0);
      name.getStyle().setFont(fontLibelle);
      credit.getStyle().setBgTransparency(0);
      cnt.addComponent(name);
      cnt.addComponent(credit);
      ligne = new ligneHorizontal(100);
      cnt.addComponent(ligne);
      addComponent(BorderLayout.CENTER, cnt);
      focus.getStyle().setBgTransparency(100);
  }

  public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected)
  {
      if ("-".equalsIgnoreCase(String.valueOf(value)))
      {
          name.setText(" - ");
          credit.setText("Encours : -  Impayés : -");
          pic.setIcon(null);
      }
      else
      {
          if (index%2 == 0)
              this.setUIID("evenRowsCell");
          else
              this.setUIID("oddRowsCell");
          name.setText("123456789012 - Rasolofomanana Marc");
          credit.setText("Crédits : 15.000 (Ar) Impayés : 10.000 (Ar)");
          pic.setIcon(null);
      }
      return this;
  }
  public Component getListFocusComponent(List list)
  {
      return focus;
  }
}

public class ligneHorizontal extends Label {
    public ligneHorizontal(int l)
    {
        String t = "";
        do
        {
            t.concat(new String("-"));
        }
        while(t.length()<l);
        this.setText(t);
        this.setPreferredH(5);
        this.getStyle().setBgColor(0);
    }
}

А также я хочу знать, как раскрасить четные строки и нечетные строки списка, потому что я пытался, но цвет не получается, пока я не нажму на ячейку.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Хорошо, я нашел решение: я получил BackgroundPainter, где в методе public void paint(Graphics g,Rectangle rect) я рисую линию (g.drawLine(rect.getX(), rect.getY()+h-1, rect.getX()+w, rect.getY()+h-1);). Поэтому, когда я хочу нарисовать линию в контейнере, я пишу myContainer.getStyle().setBgPainter(new derivedClassName(myContainer));

0 голосов
/ 28 сентября 2011

добавить Label с предпочтительной высотой 5, с черным цветом bg между контейнерами

...