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)
}
})
}
使用Swing照样可以开发出漂亮的界面.
主要的解决方案如下:
1: 合理的布局 , 搭建好界面的框架. 熟悉常用的布局, 并且布局还可以嵌套布局. 可以实现复杂而又美观的界面.
2: 适当的图片, 按钮, 背景等 都可以使用图片, 当然了为了节省系统资源, 可以使用稍微压缩得比较小的图片.
3: 搭配html , swing支持html简单的标签, 所以美化JButton ,JLabel等组件时, 可以使用一些Html标签. 来美化~~
4: 颜色调和. 界面要美观, 也可以适当的添加颜色, 但是要注意搭配和协调
5: 重写部分组件, swing自带的组件外观, 的确不太让人恭维, 但是我们可以自己根据需求进行重写.
6: 添加动态效果, 我们写javaScript经常是用来做特效的 , 我们可以借鉴一些JS特效的思路, 使用线程, 来给swing组件 等,添加动态的效果 , 比如抖动, 移动 , 滑出 等 特效~
7: 更换皮肤和外观 , 或者使用第三方的皮肤 ,比大神制作的皮肤BeautyEye ,就想当的漂亮