Разработка пользовательского интерфейса в 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);
}
};