Java me 如何在容器边界布局的南部位置绘制水平线?
我有一个布局为BorderLayout的容器。我想在南部位置画一条水平线,因为这个容器是重复绘制的,所以我想用水平线来划分每个容器 代码如下: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
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的观点,但我以前使用标签文本“”(一个空格)