Установка ImageIcon в JLabel через setIcon (...) приводит к обрезанию ImageIcon - PullRequest
0 голосов
/ 12 февраля 2019

У меня проблема с настройкой ImageIcon для моего JLabel.Я пытаюсь установить ImageIcon через

JLabel label = new JLabel();
label.setIcon(...);

, и это приводит к отключению ImageIcon.Я уже попробовал почти все, но, похоже, не нашел ничего, что работает.

Это происходит под Windows 10 с Java 1.8.

У меня есть метод, который возвращает ImageIcon

public ImageIcon getIconFromFilePath(String filePath, int width, int height) throws FileNotFoundException {
    Image image = ShellFolder.getShellFolder(new File(filePath)).getIcon(true);
    return new ImageIcon(width == 0 || height == 0 ? image : image.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH), null);
}

и для справки, если я не хочу, чтобы размер ImageIcon был изменен:

public ImageIcon getIconFromFilePath(String filePath) throws FileNotFoundException {
    return getIconFromFilePath(filePath, 0, 0);
}

, и я устанавливаю его так:

try {
    label = new JLabel(getIconFromFilePath(filepath));
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

Я также пытался получить Icon (не ImageIcon) через:

FileSystemView.getFileSystemView().getSystemIcon(new File(filepath));

, что приводит к различным типам возвращаемых методов.

Я пробовал его на Macbook, который неНичего не отрезано.

Похоже, что Java в Windows внутренне помещает Icon в какой-то контейнер, который затем обрезает его.

Как-нибудь обойти эту проблему?Большое спасибо!

...