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

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

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

Моя проблема в том, как разработать пользовательский интерфейс. У меня нет опыта работы с awt (только что качал некоторые приложения в java), но это не кажется большой проблемой, потому что это довольно просто ... Основная проблема связана с «заменой» андроида 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 как одну строку, но экран Kindle показывает только 14-26). Попытка вставить все KPanel с меткой и двумя кнопками приводит к отображению меток, за которыми следует одна пустая строка для каждого элемента, без какой-либо кнопки... отображение тех же KPanel внешних страниц работает нормально - я вижу метку и обе кнопки...

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


person tomas    schedule 06.02.2013    source источник
comment
Вы пытались указать ширину/высоту каждой панели KPanel как ширину/высоту Kindle?   -  person Waynn Lue    schedule 06.02.2013
comment
Я попробовал метод setSize(), но я не увидел никакого эффекта в симуляторе KDK, и у меня еще нет Kindle, чтобы попробовать его там...   -  person tomas    schedule 07.02.2013


Ответы (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);
  }
};
person Waynn Lue    schedule 07.02.2013