Разработка пользовательского интерфейса в Kindle KDK (расширенный java.awt)

У меня есть некоторый опыт разработки под Android, и теперь я решил изучить что-то новое - разработку для Kindle (НЕ для Kindle Fire на базе Android).

Amazon предлагает KDK + Personal Basis Profile 1.1.2 (JSR 217) в качестве платформы.

Моя проблема в том, как разработать пользовательский интерфейс. У меня нет опыта работы с awt (только что делал som-приложения в java swing), но это не кажется большой проблемой, потому что это довольно просто... Основная проблема с "заменой" андроида ListView,

Я пытался использовать компонент с именем KPages, Я, однако, не могу поставить что-то еще, кроме KLabel в модели страниц...

    PageProvider pp = PageProviders.createKBoxLayoutProvider(KBoxLayout.PAGE_AXIS);
    final KPages pages = new KPages(pp);

    for (int i = 0; i < 40; i++) {
        final KPanel listItem = new KPanel();
        // listItem.add(new KLabelMultiline("label numero " + i + " is not very good, because it will be displayed over more than one line and 'pages' won't be able to deal with it"));
        listItem.add(new KLabel("label numero " + i + " is very good, because it won't be displayed over more than one line and 'pages' will be able to deal with it"));
        listItem.add(new KButton("read"));
        listItem.add(new KButton("edit"));
        pages.addItem(listItem);
    }

    context.getRootContainer().add(pages);

Пример кода выше показывает мои попытки перечислить некоторые элементы. KPages хорошо работает только при добавлении KLabel с помощью pages.addItem(), Просто вставив KLabelMultiline вызывает сбои в работе пейджинга (вместо отображения меток 0-12 он "отображает" 0–26, как в одной строке, но на экране разжигания отображается только 14–26). Попытка вставить целое KPanel с меткой и 2 кнопками приводит к выводу меток, за которыми следует по одной пустой строке для каждого элемента, без какой-либо кнопки... отображая то же KPanel внешние страницы работают нормально - я вижу ярлык и обе кнопки...

Я почти уверен, что я виноват в том, что что-то пропустил, но благодаря очень маленькой информации, доступной на KDK, я не могу ее найти... Кто-нибудь может мне помочь? Спасибо

1 ответ

Попробуйте переопределить getPreferredSize, getMinimumSize, а также getMaximumSize вызовы вашего конструктора для KPanel, Задавать width а также height на любой размер экрана.

final KPanel listItem = new KPanel() {
  public Dimension getPreferredSize() {
    return new Dimension(width, height);
  }
  public Dimension getMinimumSize() {
    return new Dimension(width, height);
  }
  public Dimension getMaximumSize() {
    return new Dimension(width, height);
  }
};
Другие вопросы по тегам