如果是JTable.等java圖形界面的組件,那么獲取數(shù)據(jù),賦值都比較簡(jiǎn)單.
成都創(chuàng)新互聯(lián)憑借專(zhuān)業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專(zhuān)業(yè)的網(wǎng)站策劃、做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都10多年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都成百上千中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。
但是看圖片,是要寫(xiě)一個(gè)Excel的輔助功能, 這對(duì)java來(lái)說(shuō)還是有點(diǎn)麻煩了.
最優(yōu)建議:
Excel的功能. 那么最佳的建議,是使用vba 語(yǔ)言進(jìn)行擴(kuò)展.(微軟出品,簡(jiǎn)單,方便,代碼量極少) .
其次的建議:
C/C++ 鍵盤(pán)鉤子 , 當(dāng)讀取到按鍵F9時(shí) ,模擬鍵盤(pán)的復(fù)制粘貼等操作.
不推薦java , 但java也能勉強(qiáng)湊合解決這個(gè)問(wèn)題:
因?yàn)閖ava 很難獲取系統(tǒng)底層的按鍵, Robot也很有局限, 比如窗口失去焦點(diǎn)的時(shí)候,讀取不到F9按鍵. ? 所以java需要調(diào)用JNI c語(yǔ)言 比較繁瑣. 比較簡(jiǎn)單的是調(diào)用JNA了,但代碼量也不少.
當(dāng)然了如果非要用java寫(xiě),也可以,我手寫(xiě)了一個(gè)簡(jiǎn)單的JNA+Robot配合
效果圖
圖片本質(zhì)上還是文件,所以就像復(fù)制文件一樣就可以了。下面是一個(gè)演示程序:
public?class?CopyImage
{
public?static?void?main(String[]?args)?throws?Exception
{
FileInputStream?fi=new?FileInputStream("image.jpg");
BufferedInputStream?in=new?BufferedInputStream(fi);
FileOutputStream?fo=new?FileOutputStream("cimage.jpg");
BufferedOutputStream?out=new?BufferedOutputStream(fo);
byte[]?buf=new?byte[4096];
int?len=in.read(buf);
while(len!=-1)
{
out.write(buf,?0,?len);
len=in.read(buf);
}
out.close();
fo.close();
in.close();
fi.close();
}
}
運(yùn)行程序是改一改圖片的路徑,另外在實(shí)際代碼中最后不要想上面的代碼直接拋出這樣的異常。
這是我們公司基類(lèi)里的一個(gè)方法希望對(duì)你有幫助。。/**
* 復(fù)制單個(gè)文件
* @param oldPath String 原文件路徑 如:c:/fqf.txt
* @param newPath String 復(fù)制后路徑 如:f:/fqf.txt
* @return boolean
*/
public void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在時(shí)
InputStream inStream = new FileInputStream(oldPath); //讀入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字節(jié)數(shù) 文件大小
// System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("復(fù)制單個(gè)文件操作出錯(cuò)");
e.printStackTrace(); } }
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
copy("D:\\test.jpg", "D:\\ttt.jpg");
}
public static void copy(String src, String dest) throws IOException {
byte[] buffer = new byte[1024];
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(src);
out = new FileOutputStream(dest);
int c;
while((c = in.read(buffer)) = 0) {
out.write(buffer, 0, c);
}
} finally {
if (in != null) {
try {
in.close();
} catch (Exception err) {
// Ignore the exception.
}
}
if (out != null) {
try {
out.close();
} catch (Exception err) {
//Ignore the exception.
}
}
}
}
}
直接用文件流打開(kāi)一個(gè)文件,在通過(guò)樓下說(shuō)的緩沖流將文件直接寫(xiě)到另外一個(gè)文件就可以了
//處理JPEG的
public static String getFixedBoundIcon(String filePath) throws Exception {
//返回地址
String result = "";
//輸出流
FileOutputStream out = null;
try {
File f = new File(filePath);
if (!f.isFile()) {
throw new Exception(f + " 不是圖片文件!");
}
//圖象文件
if (f != null f.exists()) {
//這里的ImageIO屬于java工廠(chǎng)類(lèi),在工廠(chǎng)類(lèi)class里面,調(diào)用的System.gc(),頻繁調(diào)用會(huì)造成dump,需要考慮優(yōu)化
BufferedImage image = ImageIO.read(f); // 讀入文件
if (image != null) {
BufferedImage tag =
new BufferedImage(116, 165, BufferedImage.TYPE_INT_RGB);
//繪制縮小后的圖
tag.getGraphics().drawImage(image, 0, 0, 116, 165, null);
//文件地址部分
int lastLength = filePath.lastIndexOf(".");
String subFilePath = filePath.substring(0, lastLength);
String fileType = filePath.substring(lastLength);
//背景
result = subFilePath + "_116_165" + fileType;
out = new FileOutputStream(result);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param =
encoder.getDefaultJPEGEncodeParam(tag);
param.setQuality(0.95f, true); //95%圖像
//像素尺寸單位.像素/英寸
param.setDensityUnit(1);
//水平分辨率
param.setXDensity(300);
//垂直分辨率
param.setYDensity(300);
encoder.setJPEGEncodeParam(param);
encoder.encode(tag);
tag = null;
}
}
f = null;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
out.close();
out = null;
}
return result;
}
還要try起來(lái)捕獲異常喲