我正在看这个question,我正在看第一个答案。
所以我尝试使用这段代码:
function makeSetTheText(b) {
function setTheText() {
document.getElementById('div' + b).innerHTML = 'HELLO WORLD'
}
return setTheText
}
for (var b = 1; b < 5; b++) {
document.getElementById('btn' + b).onclick = makeSetTheText(b)
}
哪个会返回<div id='div1'>Div 1</div>
<div id='div2'>Div 2</div>
<div id='div3'>Div 3</div>
<div id='div4'>Div 4</div>
<button id='btn1'>Button 1</button>
<button id='btn2'>Button 2</button>
<button id='btn3'>Button 3</button>
<button id='btn4'>Button 4</button>
(或引发public static Image getIcon(String fileName) throws Exception {
File file = new File(fileName);
FileSystemView view = FileSystemView.getFileSystemView();
Icon icon = view.getSystemIcon(file);
ImageIcon imageIcon = (ImageIcon) icon;
Image image = imageIcon.getImage();
return image;
}
),但Image
的分辨率非常低。
我假设这是因为返回了Error
。
有没有办法说明我想要退回哪个Image
?
答案 0 :(得分:2)
Java为您提供了两种检索文件图标的可能性 你已经知道了第一个:
Icon icon = FileSystemView.getFileSystemView().getSystemIcon(new File(FILENAME));
为您提供16x16像素的结果。
另一个使用ShellFolder
Icon icon = new ImageIcon(ShellFolder.getShellFolder(new File(FILENAME)).getIcon(true));
会根据getLargeIcon
方法中的布尔标记getIcon
检索较大的一个(32x32)。
我很抱歉,但是(目前)更多的是java默认库无法实现。兴趣存在,因为您可以阅读in this JDK bugreport。
但到目前为止还没有做任何事情。
如果您真的想拥有更大的版本,则需要使用操作系统根据本机调用来检索它们,或者将它们手动存储为本地应用程序资源。
注意:如果您在访问ShellFolder
时遇到问题,请阅读this question。
答案 1 :(得分:0)
我使用了这种方法:
protected ImageIcon getImageIcon() {
File f = new File((iconPath!=null)?iconPath:"");
if (!f.isFile() || !f.canRead()) {
iconPath = Constants.getDefaultPreviewIconPath();
}
ImageIcon icon = new ImageIcon(iconPath, titolo);
return new ImageIcon(Utils.getScaledImage(
icon.getImage(),
Constants.getICON_WIDTH(),
Constants.getICON_HEIGTH()));
}
其中getScaledImage是:
public static Image getScaledImage(Image srcImg, int w, int h) {
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(srcImg, 0, 0, w, h, null);
g2.dispose();
return resizedImg;
}