#java #image #awt
#java #изображение #awt
Вопрос:
Я пытаюсь загрузить некоторые изображения в массив для апплета, и я знаю, что должен быть лучший способ сделать это?
public class Images extends Applet
{
Image card[]=new Image[45];
public void init()
{
img[0]= getImage( getDocumentBase(),"pics/1.gif");
img[1]= getImage( getDocumentBase(),"pics/2.gif");
.....
Комментарии:
1. Вероятно, лучше всего иметь какой-то конфигурационный файл, в котором перечислены загружаемые изображения и который используется
for-loop
для загрузки каждого из них в зависимости от потребностей конфигурации2. Я должен был указать, что имена изображений не все одинаковы — на случай, если это имеет значение
3. Вы хотите повысить производительность? Попробуйте использовать стратегию отложенной загрузки.
Ответ №1:
Даже если имена файлов не предсказуемы на основе числа, у вас все равно может быть их коллекция. Например:
// Common prefix removed for brevity
private static final String[] IMAGE_FILES = {
"img1.gif", "happy.gif", "sad.gif" /* etc */
};
Затем:
Image[] images = new Image[IMAGE_FILES.length];
for (int i = 0; i < images.length; i ) {
images[i] = getImage(getDocumentBase(), "pics/" IMAGE_FILES[i]);
}
(Вполне может быть более приятный способ преобразования одного массива в другой с использованием лямбда-выражения в Java 8 — я не проверял.)
Мне не ясно, что Images
класс — это хорошая идея, хотя на самом деле это не похоже на то, что вы обычно создаете экземпляр. Я бы также настоятельно рекомендовал использовать закрытые поля.