import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserCommandEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserListener;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserNavigationEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserWindowOpeningEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserWindowWillOpenEvent;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.mohe.utils.system.L;
/**
* 主窗体
*
* @author dxm
*
*/
public class MainFrame extends JFrame {
private static final long serialVersionUID = -6348199501339114346L;
// 最后操作时间
public long lastTime = new Date().getTime();
// 浏览器窗体
private JWebBrowser webBrowser = null;
private JLabel lbl = null;
private JPanel panel = null;
public int pageFlag = 1;
/**
* 构造器
*/
public MainFrame() {
initData();
initGUI();
addListance();
}
private void initData() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
this.setUndecorated(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(600, 500);
this.setLocationRelativeTo(null);
this.setSize(toolkit.getScreenSize());
this.setLocation(0, 0);
webBrowser = new JWebBrowser();
webBrowser.navigate(Config.local + Config.index);
webBrowser.setBarsVisible(false);
webBrowser.setMenuBarVisible(false);
webBrowser.setLocationBarVisible(false);
webBrowser.setButtonBarVisible(false);
webBrowser.setStatusBarVisible(false);
ImageIcon icon = new ImageIcon(System.getProperty("user.dir") + "\\城市.gif");
File img = new File(System.getProperty("user.dir") + "\\" + Config.img);
if (img.exists()) {
icon = new ImageIcon(img.getAbsolutePath());
}
lbl = new JLabel(icon);
panel = new JPanel(new BorderLayout());
}
private void initGUI() {
panel.add(webBrowser, BorderLayout.CENTER);
this.setContentPane(panel);
}
private void addListance() {
webBrowser.addWebBrowserListener(new WebBrowserListener() {
@Override
public void windowWillOpen(WebBrowserWindowWillOpenEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ windowWillOpen");
}
@Override
public void windowOpening(WebBrowserWindowOpeningEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ windowOpening");
}
@Override
public void windowClosing(WebBrowserEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ windowClosing");
}
@Override
public void titleChanged(WebBrowserEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ titleChanged");
}
@Override
public void statusChanged(WebBrowserEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ statusChanged");
}
@Override
public void locationChanging(WebBrowserNavigationEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ locationChanging");
}
@Override
public void locationChanged(WebBrowserNavigationEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ locationChanged");
// 判断当前页面等级
String locationURL = arg0.getNewResourceLocation();
int index = locationURL.indexOf("pageFlag=");
if (index != -1) {
pageFlag = Integer.parseInt(locationURL.substring(index + 9, index + 10));
} else {
pageFlag = 1;
}
System.out.println("____________________ pageFlag:" + pageFlag);
// 判断下载文件进行打印
index = locationURL.indexOf("fileName=");
System.out.println("____________________ file Index:" + index);
if (index != -1) {
String fs = locationURL.substring(index + 9);
L.info("______________________ fileName = " + fs);
String[] fns = fs.split(",");
try {
List<File> flist = downNetFile(Arrays.asList(fns));
doPrintDoc(flist);
} catch (IOException e) {
e.printStackTrace();
}
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
webBrowser.setVisible(false);
webBrowser.setVisible(true);
webBrowser.updateUI();
webBrowser.repaint();
panel.updateUI();
panel.repaint();
panel.validate();
}
});
}
@Override
public void locationChangeCanceled(WebBrowserNavigationEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ locationChangeCanceled");
}
@Override
public void loadingProgressChanged(WebBrowserEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ loadingProgressChanged");
}
@Override
public void commandReceived(WebBrowserCommandEvent arg0) {
lastTime = new Date().getTime();
L.info("___________ commandReceived");
}
});
lbl.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
change(2);
}
});
}
/**
* 屏保切换
*/
public void change(final int type) {
lastTime = new Date().getTime();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (type == 1) {
// 二级,三级页面跳首页
if (pageFlag == 2 || pageFlag == 3) {
webBrowser.navigate(Config.local + Config.index);
}
// else {
// webBrowser.setVisible(false);
// panel.add(lbl, BorderLayout.CENTER);
// }
} else {
panel.remove(lbl);
webBrowser.setVisible(true);
}
panel.validate();
}
});
}
/**
* 下载网络文件
*
* @param nameList
* @throws IOException
*/
private List<File> downNetFile(List<String> nameList) throws IOException {
L.info("________________________ downNetFile1");
if (null == nameList || nameList.isEmpty()) {
return new ArrayList<File>();
}
List<File> flist = new ArrayList<File>();
for (String name : nameList) {
L.info("________________________ downNetFile2");
URL url = new URL(Config.local + "/excel/" + name);
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
// 设置请求信息
httpConnection.setRequestProperty("GET", "/down.zip HTTP/1.1");
// 设置接受信息
httpConnection.setRequestProperty("Accept", "image/gif,image/x-xbitmap,application/msword");
// 设置连接信息
httpConnection.setRequestProperty("Connection", "Keep-Alive");
// 获得输入流
InputStream input = httpConnection.getInputStream();
// 创建随机文件
flist.add(new File(name));
RandomAccessFile oSavedFile = new RandomAccessFile(name, "rw");
byte[] b = new byte[1024];
int nRead;
// 从输入流中读入字节流,然后写到文件中
while ((nRead = input.read(b, 0, 1024)) > 0) {
oSavedFile.write(b, 0, nRead);
}
input.close();
oSavedFile.close();
httpConnection.disconnect();
}
return flist;
}
private void doPrintDoc(List<File> fileList) {
if (null == fileList || fileList.isEmpty()) {
return;
}
// 初始化组件
ComThread.InitSTA();
L.info("___________________ start Print 1");
for (File file : fileList) {
if (file == null || !file.exists()) {
return;
}
L.info("___________________ start Print 2 :" + file.getAbsolutePath());
int index = file.getName().indexOf(".");
String extName = file.getName().toUpperCase().substring(index + 1);
String comApp = "Word.Application";
String property = "Documents";
if (extName.equals("DOC") || extName.equals("DOCX") || extName.equals("WPS")) {
comApp = "Word.Application";
property = "Documents";
} else if (extName.equals("XLS") || extName.equals("XLSX") || extName.equals("ET")) {
comApp = "Excel.Application";
property = "Workbooks";
} else if (extName.equals("PPT") || extName.equals("PPTX") || extName.equals("DPS")) {
comApp = "PowerPoint.Application";
property = "Presentations";
}
L.info("___________________ start Print 3 :" + comApp);
ActiveXComponent axc = new ActiveXComponent(comApp);
try {
if (!property.equals("Presentations")) {
Dispatch.put(axc, "Visible", new Variant(false));
}
Dispatch document = axc.getProperty(property).toDispatch();
Dispatch doc = null;
if (property.equals("Presentations")) {
doc = Dispatch.call(document, "Open", file.getAbsolutePath(), true, true, false).toDispatch();
} else {
doc = Dispatch.invoke(document, "Open", Dispatch.Method, new Object[] { file.getAbsolutePath() }, new int[1]).toDispatch();
}
L.info("___________________ start Print 3 :" + file.getAbsolutePath());
Dispatch.call(doc, "PrintOut");
Dispatch.call(doc, "Close");
if (!property.equals("Presentations")) {
axc.invoke("Quit", new Variant[] {});
}
} catch (Exception e) {
e.printStackTrace();
} finally {
comApp = "";
property = "";
}
}
ComThread.Release();
}
public static void main(String[] args) {
L.APPNAME = "Street_cs";
L.LOGF = true;
L.initLog();
UIUtils.setPreferredLookAndFeel();
NativeInterface.open();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainFrame frame = new MainFrame();
frame.setVisible(true);
new ChangeWait(frame).tryStart();
new ServeSocket();
}
});
NativeInterface.runEventPump();
}
}
2.jar包下载地址
https://download.csdn.net/detail/daixinmei/7827723