JMenuItem ImageIcon слишком большой

Я столкнулся с проблемой. Мое изображение слишком велико, поэтому оно увеличивает соответствующий JMenuItem. Я не хочу развивать велосипеды, например,

ImageIcon image = new ImageIcon(new ImageIcon("/home/template/img.jpg")
        .getImage().getScaledInstance(32, 32, Image.SCALE_DEFAULT));

Есть ли другой способ сделать это?

Ответ 1

Если вы не хотите масштабировать изображение в коде (я полагаю, что вы имеете в виду в вопросе?), почему бы просто не сделать исходный образ таким размером, чтобы начать? Самое простое решение иногда лучше!

Кроме того, getScaledInstance(), как правило, плохая идея. В этом объясняется, почему и дает лучшие варианты для изменения размера изображения. Если вы используете изображение в другом месте, то стоит прочитать эту статью и масштабировать ее с использованием более совершенной техники (например, graphics.drawImage()), но если вы просто используете ее в меню, то изменение размера исходного изображения возможно лучшее, что можно сделать.

Если вы собираетесь изменить размер:

BufferedImage image = ImageIO.read("img.jpg");
BufferedImage ret = new BufferedImage(32,32,BufferedImage.TYPE_RGB);
ret.getGraphics().drawImage(image,0,0,32,32,null);

Что-то вроде этого должно дать вам изображение, вы можете создать свой ImageIcon, используя ret.