setIcon в j2me для установки значков для кнопок

Я пытаюсь вставить значок (масштабированное изображение) как часть кнопки, которая также содержит текст. Я программирую в J2ME для Nokia SDK (устройство S60) и использую Eclipse.

Код выглядит следующим образом:
but = new Button("Some text");
Image img = null;
try {
img = Image.createImage("/flower.png");
} catch(IOException e) {
e1.printStackTrace();
}
but.setIcon(img);

Приведенные выше строки — это код, который работает правильно. У меня проблемы с масштабированием изображения до размера кнопки. Всякий раз, когда я пытаюсь это сделать, я получаю ошибку деления на ноль. Функция, которую я использую для масштабирования изображения, и способ его масштабирования:
Image img2 = null;
img2 = img.scaled(but.getWidth()/2, but.getHeight());
but.setIcon(img2);

Я не могу понять, почему я получаю ошибку деления на ноль каждый раз, когда пытаюсь запустить приведенный выше код. Есть ли какая-то другая функция, которую я должен использовать? Или я что-то упускаю?


person Sriram    schedule 15.09.2010    source источник


Ответы (1)


какой интерфейс пользовательского интерфейса используется, это LWUIT? если да, вы не можете получить ширину/высоту любого компонента перед отображением формы, вместо этого вы должны использовать getPreferredWidth

person Mahdi Hijazi    schedule 17.09.2010
comment
привет, да, я использую LWUIT. Я думаю, что проблема возникает из-за того, что я использую дроби для масштабирования ширины и высоты, пока они являются целыми. Скажем, (0,5)*ширина может стать 0 в целочисленной арифметике. Мне еще предстоит попробовать это, так как я был занят другими вещами, но я думаю, что это может быть возможной причиной. - person Sriram; 24.09.2010
comment
У вас вообще нет дробей, getWidth возвращает int, когда вы делите его на 2, вы получите int не с плавающей запятой, если только вы не разделите на 2.0f. - person Mahdi Hijazi; 24.09.2010