📄 resourcefactory.java
字号:
/*
* Created on 2005-3-14
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package resource;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.util.Hashtable;
import java.io.*;
import java.awt.Image;
import java.awt.RenderingHints;
import javax.imageio.*;
import java.util.Properties;
/**
* @author AnSen
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class ResourceFactory {
private static ResourceFactory srcLoader = null;
private Hashtable hstblProperties = new Hashtable();
private RenderingHints renderingHints=new RenderingHints(null);
public static ResourceFactory getInstance() {
if (srcLoader == null) {
srcLoader = new ResourceFactory();
}
return srcLoader;
}
private ResourceFactory() {
Document doc = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder bulider = factory.newDocumentBuilder();
doc = bulider.parse("resource" + File.separator + "resource.xml");
} catch (IOException e) {
e.printStackTrace();
return;
} catch (Exception er) {
return;
}
trancformDocument(doc);
//new renderingHints
renderingHints.put(RenderingHints.KEY_ALPHA_INTERPOLATION,
RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
renderingHints.put(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_OFF);
renderingHints.put(RenderingHints.KEY_COLOR_RENDERING,
RenderingHints.VALUE_COLOR_RENDER_SPEED);
renderingHints.put(RenderingHints.KEY_DITHERING,
RenderingHints.VALUE_DITHER_DISABLE);
renderingHints.put(RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
renderingHints.put(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
renderingHints.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_SPEED);
renderingHints.put(RenderingHints.KEY_STROKE_CONTROL,
RenderingHints.VALUE_STROKE_NORMALIZE);
renderingHints.put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
}
private void trancformDocument(Document doc){
NodeList nlsResources=doc.getElementsByTagName("RESOURCE");
String resourceID=null;
for(int i=0;i<nlsResources.getLength();i++){
resourceID=nlsResources.item(i).getFirstChild().getNodeValue();
NodeList nlsRsr=doc.getElementsByTagName(resourceID);//check resource
if(nlsRsr.getLength()==1){
Element elmRsr=(Element)nlsRsr.item(0);
this.hstblProperties.put(resourceID,
createResource(elmRsr));
}
}
}
private Properties createResource(Element rsc){
NodeList nlsProp=rsc.getChildNodes();
Properties prop=new Properties();
for(int i=0;i<nlsProp.getLength();i++){
if(nlsProp.item(i).getNodeName().charAt(0)=='#'){
continue;
}
Element elm=(Element)(nlsProp.item(i));
if(elm.getNodeName().charAt(0)!='#'){
//is images properties
if(elm.getNodeName().indexOf("IMAGES")>=0){
prop.put(elm.getNodeName(),
readImages(rsc.getNodeName(),elm));
}else{
//normal properties
prop.setProperty(elm.getNodeName(),
elm.getFirstChild().getNodeValue());
}
}
}
return prop;
}
private Image[] readImages(String resourceID,Element elmImages){
NodeList nlsImages=elmImages.getElementsByTagName("IMAGE");
int nImages=nlsImages.getLength();
Image[] images=new Image[nImages];
for(int i=0;i<nImages;i++){
File file=new File("resource" + File.separator + resourceID
+ File.separator
+ nlsImages.item(i).getFirstChild().getNodeValue());
try{
images[i]=ImageIO.read(file);
}catch(IOException er){
return null;
}
}
return images;
}
public Properties getProperties(String resourceID){
return (Properties)this.hstblProperties.get(resourceID);
}
public RenderingHints getRenderingHints(){
return renderingHints;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -