Java me 如何在容器边界布局的南部位置绘制水平线?

Java me 如何在容器边界布局的南部位置绘制水平线?,java-me,lwuit,Java Me,Lwuit,我有一个布局为BorderLayout的容器。我想在南部位置画一条水平线,因为这个容器是重复绘制的,所以我想用水平线来划分每个容器 代码如下: tList = new List(tModel); tList.setListCellRenderer(new CTable(listclient)); public class CTable extends Container implements ListCellRenderer { private Label pic = new Label

我有一个布局为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);
    }
}
tList=新列表(tModel);
setListCellRenderer(新的CTable(listclient));
公共类CTable扩展容器实现ListCellRenderer{
私有标签pic=新标签(“”);
私人集装箱cnt;
专用标签名称=新标签(“”);
自有标签信用=新标签(“”);
私有木质水平木质;
私有字体fontLibelle=(MenuPrincipalForm.r).getFont(“fontextfieldbold”);
专用标签焦点=新标签(“”);
公共CTable(向量值)
{
setLayout(新的BorderLayout());
添加组件(BorderLayout.WEST,pic);
cnt=新容器(新的BoxLayout(BoxLayout.Y_轴));
name.getStyle().setbgttransparency(0);
name.getStyle().setFont(fontLibelle);
credit.getStyle().setbgttransparency(0);
cnt.addComponent(名称);
cnt.addComponent(信贷);
木质素=新木质素水平(100);
碳纳米管添加组分(木质素);
添加组件(BorderLayout.CENTER,cnt);
focus.getStyle().setbgttransparency(100);
}
公共组件GetListCellRenderComponent(列表列表、对象值、int索引、布尔isSelected)
{
if(“-”.equalsIgnoreCase(String.valueOf(value)))
{
name.setText(“-”);
credit.setText(“Encours:-Impayés:-”;
pic.setIcon(空);
}
其他的
{
如果(索引%2==0)
此.setUIID(“evenRowsCell”);
其他的
这个.setUIID(“oddRowsCell”);
name.setText(“123456789012-Rasolofomanana Marc”);
credit.setText(“Crédits:15000(Ar)Impayés:10000(Ar)”;
pic.setIcon(空);
}
归还这个;
}
公共组件getListFocusComponent(列表)
{
返回焦点;
}
}
公共类木质水平延伸标签{
公共木质水平(国际l)
{
字符串t=“”;
做
{
t、 concat(新字符串(“-”);
}

虽然(t.length()添加
标签
首选高度为5,容器之间为黑色背景色

添加
标签
首选高度为5,容器之间为黑色背景色

确定,我找到了解决方案:我导出了
背景画家
公共空白绘画中的位置(图形g,矩形矩形矩形)
methodi画线(
g.drawLine(rect.getX(),rect.getY()+h-1,rect.getX()+w,rect.getY()+h-1);
)。
因此,当我想在容器中画一条线时,我就写了
myContainer.getStyle().setbgpainer(new-derivedClassName(myContainer));
好了,我找到了解决方案:我导出了
BackgroundPainter
公共虚空绘制(Graphics g,Rectangle rect)
方法中的地方(
g.drawLine(rect.getX()),rect.getY()+h-1,rect.getX()+w,rect.getY()+h-1);
)。
因此,当我想在容器中画一条线时,我会编写
myContainer.getStyle().setBgPainter(新的derivedClassName(myContainer));

这不起作用,因为标签有一个空字符串标签的特殊情况,给它们一个0的首选大小值,而不绘制它们。首选宽度也应该增加,这可能会使它起作用,尽管这不是一个很好的解决方案。我们通常在主题中使用可重复的图像(例如,查看T-zone Friends演示中添加对话框的用户界面。@Shai Almog您能给出该站点的url吗?我同意Shai的观点,但我以前使用标签文本
“”
(一个空格)这是行不通的,因为标签有一个特殊的情况,空字符串标签给它们一个0的首选大小值,而不绘制它们。首选宽度也应该增加,这可能会使它工作,尽管这不是一个很好的解决方案。我们通常在主题中使用可重复的图像(例如,查看T-zone Friends演示中添加对话框的用户界面。@Shai Almog您能给出该站点的url吗?我同意Shai的观点,但我以前使用标签文本
“”
(一个空格)