用Java写一个在线金山词霸程序(三)

2014-11-24 09:07:08 · 作者: · 浏览: 2
nt i=0; i
double d = ds[i];
_sleep(10);
AWTUtilities.setWindowOpacity(jdmean,(float)d);
jdmean.setBounds(jdmean.getX(), jdmean.getY(), 260-(int)((26*i)*1.1), 200-(int)((20*i)*1.1));
}
}
}
});
t.start();
return;
}
try {
String url = "http://dict-co.iciba.com/api/dictionary.php key={这里需要填Key,你可以到金山词霸Api官网审请,审请到key后,把这段废话去掉,左右大括号也要去掉,然后填入你的key,本人有一个key,但不便放在网上共享}&w="
+jtfWord.getText();
VarByte vb = DictFrame.getPage(url);
String content = new String(vb.to_byte(), "utf-8");
String tagBegin = "";
String tagEnd = "";
StringBuilder sb = new StringBuilder();
int cur = 0;
while((cur=content.indexOf(tagBegin, cur))!=-1) {
cur += 13;
int curEnd = content.indexOf(tagEnd, cur);
sb.append(content.substring(cur, curEnd));
curEnd += 14;
}
if(sb.toString().length()==0) sb.append("抱歉, 未查询到词义!");
jtamean.setText(sb.toString());
AWTUtilities.setWindowOpacity(jdmean,0.7f);
jdmean.setBounds(jdmean.getX(), jdmean.getY(), 260, 200);
} catch (Exception ex) {
jtamean.setText("没网你查个毛啊!");
AWTUtilities.setWindowOpacity(jdmean,0.7f);
jdmean.setBounds(jdmean.getX(), jdmean.getY(), 260, 200);
}
}
}
@Override
public void keyPressed(KeyEvent arg0) {
}
});
}
public static void _sleep(long m) {
try {
Thread.sleep(m);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static VarByte getPage (String address) throws Exception {
URL url = new URL(address);
InputStream inStream = url.openStream();
VarByte page = new VarByte();
int oneTimeSize = 2048;
byte[] b = new byte[oneTimeSize];
int len;
while((len=inStream.read(b))!=-1) {
if(len!=oneTimeSize) {
b = Arrays.copyOf(b, len);
}
page.append(b);
}
if(inStream!=null) inStream.close();
return page;
}
}
class VarByte {
byte[] b = new byte[512];
int capacity = 512;
int len = 0;
public VarByte append(byte[] ba) {
if(len+ba.length>capacity) {
byte[] tmp = new byte[(len+ba.length)*2];
System.arraycopy(b, 0, tmp, 0, len);
System.arraycopy(ba, 0, tmp, len, ba.length);
b = tmp;
len = len+ba.length;
capacity = len*2;
} else {
System.arraycopy(ba, 0, b, len, ba.length);
len = len + ba.length;
}
return this;
}
public byte[] to_byte() {
byte[] btmp = new byte[len];
System.arraycopy(b, 0, btmp, 0, len);
return btmp;
}
public byte[] to_byte(int start, int len) {
byte[] btmp = new byte[len];
for(int i=0; i
btmp[i] = b[start+i];
}
return btmp;
}
public int size() {
return len;
}
}