📄 browserframe.java
字号:
public void actionPerformed(java.awt.event.ActionEvent evt) {
miOpenActionPerformed(evt);
}
});
fileJMenu.add(miOpen);
miSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
miSave.setText("Save Page As...");
miSave.setToolTipText("Saves this document as a file");
miSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
miSaveActionPerformed(evt);
}
});
fileJMenu.add(miSave);
miPrint.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
miPrint.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/print.png"))); // NOI18N
miPrint.setText("Print");
miPrint.setToolTipText("Prints this page");
miPrint.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
miPrintActionPerformed(evt);
}
});
fileJMenu.add(miPrint);
fileJMenu.add(jSeparator1);
miExit.setText("Exit");
miExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
miExitActionPerformed(evt);
}
});
fileJMenu.add(miExit);
mainJMenuBar.add(fileJMenu);
toolsJMenu.setText("Tools");
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmiTraceRedraw, org.jdesktop.beansbinding.ELProperty.create("${selected}"), toolsJMenu, org.jdesktop.beansbinding.BeanProperty.create("debugGraphicsOptions"));
bindingGroup.addBinding(binding);
cmiTraceRedraw.setText("Trace Redraw");
cmiTraceRedraw.setToolTipText("Shows update region while redraw procedure");
cmiTraceRedraw.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmiTraceRedrawActionPerformed(evt);
}
});
toolsJMenu.add(cmiTraceRedraw);
mainJMenuBar.add(toolsJMenu);
setJMenuBar(mainJMenuBar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 573, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 556, Short.MAX_VALUE)
);
bindingGroup.bind();
pack();
}// </editor-fold>//GEN-END:initComponents
private void edStatusTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_edStatusTextActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_edStatusTextActionPerformed
private void miSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miSaveActionPerformed
brMain.save();
}//GEN-LAST:event_miSaveActionPerformed
private void miExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miExitActionPerformed
//brMain.dispose();
dispose();
}//GEN-LAST:event_miExitActionPerformed
private void bnLockerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnLockerActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_bnLockerActionPerformed
private void onBrowserPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_onBrowserPropertyChange
String stPN = evt.getPropertyName();
if(stPN.equals("navigatedURL")) {
String st[] = ((String)evt.getNewValue()).split(",");
edAddress.setText( st[0] );
stOldParams = "";
brXMLTree.empty();
} else if(stPN.equals("progressBar")) {
String st[] = ((String)evt.getNewValue()).split(",");
int iMax = Integer.parseInt(st[0]),
iPos = Integer.parseInt(st[1]);
if(0==iMax){
pbDownloadDoc.setVisible(false);
if(brMain.isDocumentReady()){
//bnRefreshActionPerformed(null);
}
} else {
pbDownloadDoc.setMaximum(iMax);
pbDownloadDoc.setValue(iPos);
pbDownloadDoc.setVisible(true);
}
} else if(stPN.equals("securityIcon")) {
bnLocker.setVisible(!((String)evt.getNewValue()).equals("0"));
}
}//GEN-LAST:event_onBrowserPropertyChange
private void onNavigate(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onNavigate
brMain.setURL(edAddress.getText());
}//GEN-LAST:event_onNavigate
private void bnBackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnBackActionPerformed
brMain.back();
}//GEN-LAST:event_bnBackActionPerformed
private void bnForwardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnForwardActionPerformed
brMain.forward();
}//GEN-LAST:event_bnForwardActionPerformed
private void bnReloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnReloadActionPerformed
brMain.refresh();
}//GEN-LAST:event_bnReloadActionPerformed
private void bnStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnStopActionPerformed
brMain.stop();
}//GEN-LAST:event_bnStopActionPerformed
private void miPrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miPrintActionPerformed
brMain.print();
}//GEN-LAST:event_miPrintActionPerformed
private void miOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_miOpenActionPerformed
brMain.open();
}//GEN-LAST:event_miOpenActionPerformed
private void cmiTraceRedrawActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmiTraceRedrawActionPerformed
brMain.setDebugDrawBorder(cmiTraceRedraw.isSelected());
}//GEN-LAST:event_cmiTraceRedrawActionPerformed
private Rectangle rcOldSelect = null;
static final String stGetElemByPath =
"function __gn(stPath)\n" +
"{\n" +
" var childOrder = stPath.split(\"/\");\n" +
" htmlNode = document;\n" +
" for(var i = 0; null!=htmlNode && i<childOrder.length; ++i) {\n" +
" var index = 0;\n" +
" var limit = parseInt(childOrder[i]);\n" +
" for(\n" +
" var htmlNode = htmlNode.firstChild;\n" +
" null!=htmlNode && index < limit;\n" +
" htmlNode = htmlNode.nextSibling )\n" +
//ditry HTML
" if( -1==htmlNode.nodeName.indexOf(\'/\') &&\n" +
" -1==htmlNode.nodeName.indexOf('<') &&\n" +
" -1==htmlNode.nodeName.indexOf('!') &&\n" +
" -1==htmlNode.nodeName.indexOf('?') &&\n" +
" -1==htmlNode.nodeName.indexOf('>')) " +
" {\n" +
" ++index;\n" +
" }\n" +
" }\n" +
" return htmlNode;\n" +
"}\n";
private String stOldParams = "";
private void brXMLTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_brXMLTreeValueChanged
if(
null==evt ||
null==evt.getNewLeadSelectionPath() ||
null==evt.getNewLeadSelectionPath().getLastPathComponent() )
{
return;
}
String pathNew = BrXMLTree.getNodePath(
(Node)(evt.getNewLeadSelectionPath().getLastPathComponent()) );
String pathOld = (null==evt.getOldLeadSelectionPath())
? ""
: BrXMLTree.getNodePath( (Node)(evt.getOldLeadSelectionPath().getLastPathComponent()) );
if(null!=rcOldSelect){
brMain.repaint(rcOldSelect);
}
final String stCommand = "#" + stGetElemByPath +
"var res = \"\";\n" +
( pathOld.isEmpty() ? "" :
"var elOld = __gn(\"" + pathOld + "\");\n" +
"if(null != elOld) {\n" +
" var cs = elOld.runtimeStyle;\n" +
" if( null != cs ) {\n" +
" var prs = \"" + stOldParams + "\".split(\",\");\n" +
" cs.borderStyle = prs[0];\n" +
" cs.borderWidth = prs[1];\n" +
" cs.borderColor = prs[2];\n" +
" }\n " +
"}\n") +
"var elNew = __gn(\"" + pathNew + "\");\n" +
"if(null != elNew) {\n" +
" var cs = elNew.runtimeStyle;\n" +
" if( null != cs ) {\n" +
" elNew.scrollIntoView();\n" +
" res = cs.borderStyle + \",\" +" +
" cs.borderWidth + \",\" +" +
" cs.borderColor\n" +
" cs.borderStyle = \"dashed\";\n" +
" cs.borderWidth = \"5px\";\n" +
" cs.borderColor = \"#FF0000\";\n" +
" }\n " +
"}\n" +
"document.documentElement.setAttribute(\"javaEval\", res);\n";
stOldParams = brMain.execJS(stCommand);
//stOldColor = stOldColor.substring(0, stOldColor.length()-1);
}//GEN-LAST:event_brXMLTreeValueChanged
private void brXMLTreeTreeWillExpand(javax.swing.event.TreeExpansionEvent evt)throws javax.swing.tree.ExpandVetoException {//GEN-FIRST:event_brXMLTreeTreeWillExpand
}//GEN-LAST:event_brXMLTreeTreeWillExpand
private void bnRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnRefreshActionPerformed
brXMLTree.setXMLSource(brMain.getXHTML(true));
}//GEN-LAST:event_bnRefreshActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BrowserFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton bnBack;
private javax.swing.JButton bnForward;
private javax.swing.JButton bnGo;
private javax.swing.JButton bnLocker;
private javax.swing.JButton bnRefresh;
private javax.swing.JButton bnReload;
private javax.swing.JButton bnStop;
private org.jdic.web.BrComponent brMain;
private org.jdic.web.BrXMLTree brXMLTree;
private javax.swing.JCheckBoxMenuItem cmiTraceRedraw;
private javax.swing.JTextField edAddress;
private javax.swing.JTextField edStatusText;
private javax.swing.JMenu fileJMenu;
private javax.swing.JToolBar ieStatus;
private javax.swing.JToolBar ieToolBar;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPopupMenu jPopupMenu1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JLabel lbURL;
private javax.swing.JMenuBar mainJMenuBar;
private javax.swing.JMenuItem miExit;
private javax.swing.JMenuItem miOpen;
private javax.swing.JMenuItem miPrint;
private javax.swing.JMenuItem miSave;
private javax.swing.JProgressBar pbDownloadDoc;
private javax.swing.JMenu toolsJMenu;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
public void onClosingWindowByScript(boolean isChildWindow){
if(!isChildWindow && JOptionPane.YES_OPTION==JOptionPane.showConfirmDialog(
this,
"The webpage you are viewing is trying to close the window.\n" +
"Do you want to close this window?",
"Warning",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE))
{
//System.exit(0);
dispose();
}
}
public String sync(BrComponentEvent e) {
switch(e.getID()){
case BrComponentEvent.DISPID_WINDOWCLOSING:
String stValue = e.getValue();
if(null!=stValue){
//OLE boolean: -1 - true, 0 - false; params:(bCancel, bIsChildWindow)
final boolean isChildWindow = (0!=Integer.valueOf(stValue.split(",")[1]));
javax.swing.SwingUtilities.invokeLater ( new Runnable() {
public void run() {
onClosingWindowByScript(isChildWindow);
}
});
}
break;
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -