📄 spidercontrol.java
字号:
centerPane.addTab("Search Parameters", formTab); treeTab.setLayout(new java.awt.BorderLayout()); searchTreePane.setBackground(new java.awt.Color(204, 204, 204)); searchTreePane.setBorder(new javax.swing.border.EtchedBorder()); searchTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { searchTreeSelectionChange(evt); } }); searchTreePane.setViewportView(searchTree); treeTab.add(searchTreePane, java.awt.BorderLayout.CENTER); pageStatistics.setBackground(new java.awt.Color(204, 204, 204)); pageStatistics.setColumns(80); pageStatistics.setRows(2); pageStatistics.setText("Select item to display its statistics"); pageStatistics.setBorder(new javax.swing.border.TitledBorder("Page statistics:")); treeTab.add(pageStatistics, java.awt.BorderLayout.SOUTH); centerPane.addTab("Search Tree", treeTab); messageTab.setBackground(new java.awt.Color(204, 204, 204)); messageTab.setBorder(new javax.swing.border.EtchedBorder()); messageTab.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); messageArea.setColumns(100); messageArea.setRows(5); messageTab.setViewportView(messageArea); centerPane.addTab("Messages", messageTab); getContentPane().add(centerPane, java.awt.BorderLayout.CENTER); statusLabel.setText("Inactive"); getContentPane().add(statusLabel, java.awt.BorderLayout.SOUTH); pack(); }//GEN-END:initComponents private void searchTreeSelectionChange(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_searchTreeSelectionChange // TODO add your handling code here: TreePath path = searchTree.getSelectionPath(); if(path == null) return; DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent(); UrlTreeNode data = (UrlTreeNode)node.getUserObject(); if(data != null && data instanceof UrlTreeNode) { String kstr = data.getKeywords(); pageStatistics.setText("Keywords found : "+kstr+"\n"); pageStatistics.append(data.getNodeStats()); } else pageStatistics.setText(""); }//GEN-LAST:event_searchTreeSelectionChange private void viewButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewButtonActionPerformed // TODO add your handling code here: try{ TreePath path = searchTree.getSelectionPath(); if(path == null) return; DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent(); UrlTreeNode data = (UrlTreeNode)node.getUserObject(); if(data instanceof UrlTreeNode) { String urlstr = data.getUrlString(); Runtime.getRuntime().exec("C:\\program files\\Internet Explorer\\iexplore.exe "+urlstr); } } catch(Exception e) { JOptionPane.showMessageDialog(this,"Could not launch Internet Explorer","Error",JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_viewButtonActionPerformed private void clearMessageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearMessageButtonActionPerformed // TODO add your handling code here: messageArea.setText(""); }//GEN-LAST:event_clearMessageButtonActionPerformed private void stopButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopButtonActionPerformed // TODO add your handling code here: if(spidey != null) spidey.stopSearch(); }//GEN-LAST:event_stopButtonActionPerformed private void startButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startButtonActionPerformed // TODO add your handling code here: int sitelimit =100, depthlimit=100; try{ sitelimit = Integer.parseInt(siteField.getText().trim()) ; depthlimit = Integer.parseInt(depthField.getText().trim()) ; } catch(NumberFormatException e) { errorLabel.setText("Invalid input for site limit or depth limit"); return; } // // retrieve domains from combobox // Object selected[] = domainList.getSelectedValues(); String[] domains = new String[selected.length]; for(int i = 0; i < domains.length; i++) domains[i]= selected[i].toString(); // // retrieve search strings // StringTokenizer keywordtokens = new StringTokenizer(keywordArea.getText(), "\n"); String keywords[] = new String[keywordtokens.countTokens()]; int i = 0; while(keywordtokens.hasMoreTokens()) keywords[i++] = keywordtokens.nextToken(); // // retrieve start site // String startsite = startSiteField.getText(); if(startsite.length() <= 0) { errorLabel.setText("Starting web site cannot be blank!"); return; } // // create and start the spider // errorLabel.setText(""); pageStatistics.setText("Click on site to view its statistics"); centerPane.setSelectedIndex(1); // show the search tree tab spidey = new Spider(searchTree, messageArea, statusLabel, startsite, keywords, domains, sitelimit,depthlimit); spidey.start(); }//GEN-LAST:event_startButtonActionPerformed private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitButtonActionPerformed // TODO add your handling code here: System.exit(0); }//GEN-LAST:event_exitButtonActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm /** * Main method. * @param args the command line arguments (not used) */ public static void main(String args[]) { new SpiderControl().show(); } /** * Verifier listener routine used to report bad data * @param message error message * @param jComponent component that caused the error. */ public void invalidData(String message, JComponent jComponent) { errorLabel.setText(message); errorLabel.setForeground(Color.red); startButton.setEnabled(false); // turn off the start button getToolkit().beep(); } /** * Verifier listener routine used to report good data * @param jComponent component that has tested ok */ public void validData(JComponent jComponent) { errorLabel.setText(" "); startButton.setEnabled(true); // turn on the start button } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTabbedPane centerPane; private javax.swing.JButton clearMessageButton; private javax.swing.JTextField depthField; private javax.swing.JLabel depthLabel; private javax.swing.JLabel domainLabel; private javax.swing.JList domainList; private javax.swing.JScrollPane domainPane; private javax.swing.JLabel errorLabel; private javax.swing.JButton exitButton; private javax.swing.JPanel formTab; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextArea keywordArea; private javax.swing.JLabel keywordLabel; private javax.swing.JScrollPane keywordPane; private javax.swing.JTextArea messageArea; private javax.swing.JScrollPane messageTab; private javax.swing.JTextArea pageStatistics; private javax.swing.JTree searchTree; private javax.swing.JScrollPane searchTreePane; private javax.swing.JTextField siteField; private javax.swing.JLabel siteLabel; private javax.swing.JButton startButton; private javax.swing.JTextField startSiteField; private javax.swing.JLabel startingLabel; private javax.swing.JLabel statusLabel; private javax.swing.JButton stopButton; private javax.swing.JPanel toolBar; private javax.swing.JPanel treeTab; private javax.swing.JButton viewButton; // End of variables declaration//GEN-END:variables /** spider object */ Spider spidey = null;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -