#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("");
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);
}
}
А также я хочу знать, как раскрасить четные и нечетные строки списка, потому что я пытался, но цвет не получается, пока я не нажму на ячейку.
Ответ №1:
Хорошо, я нашел решение: я вывел BackgroundPainter
where в public void paint(Graphics g,Rectangle rect)
методе, который я рисую line ( g.drawLine(rect.getX(), rect.getY() h-1, rect.getX() w, rect.getY() h-1);
) . Поэтому, когда я хочу нарисовать линию в контейнере, я пишу myContainer.getStyle().setBgPainter(new derivedClassName(myContainer));
Ответ №2:
добавить Label
с предпочтительной высотой 5, с черным цветом bg между контейнерами
Комментарии:
1. Это не сработает, потому что метки имеют особый случай для меток с пустыми строками, присваивая им значение предпочтительного размера 0 и не рисуя их. Предпочтительная ширина также должна быть увеличена, что может заставить ее работать, хотя это не отличное решение. Обычно мы используем повторяющиеся изображения в теме (например, ознакомьтесь с пользовательским интерфейсом для диалогового окна добавления в демо-версии T-zone Friends.
2. @Shai Almog Можете ли вы указать URL-адрес сайта?
3. я согласен с Шаем, но раньше я использовал текст метки
" "
(один пробел)