java类浏览器

package treeroot.reflect;

import java.util.List;
public interface Node {
 int CLASS=0x10000;
 int INTERFACE=0x01000;
 int CONSTRUCTOR=0x00100;
 int METHOD=0x00010;
 int FIELD=0x00001; 
 void setChilds(List childs);
 boolean hasChild();
 List getChilds();
 String getName();
 String getDetail();
 int getType();
 
 //in order to sort
 int getOrder();
}



package treeroot.reflect;

import treeroot.reflect.Node;
import java.util.List;
import java.lang.reflect.Method;

public class MethodNode implements Node {
 
 private int order;
 private Method m;
 public MethodNode(Method m){
  this(m,0);
 }
 public MethodNode(Method m,int order){
  this.m=m;
  this.order=order;  
 }

 /**
  * Method setChilds
  *
  *
  * @param parm1
  *
  */
 public void setChilds(List parm1) {
  throw new UnsupportedOperationException("MothodNode has no child!");
  // TODO: Add your code here
 }

 /**
  * Method hasChild
  *
  *
  * @return
  *
  */
 public boolean hasChild() {
  return false;
  // TODO: Add your code here
 }

 /**
  * Method getChilds
  *
  *
  * @return
  *
  */
 public List getChilds() {
  throw new UnsupportedOperationException("MothodNode has no child!");
  // TODO: Add your code here
 }

 /**
  * Method getName
  *
  *
  * @return
  *
  */
 public String getName() {
  return m.getName()+ Helper.getParams(getDetail());
  // TODO: Add your code here
 }

 /**
  * Method getDetail
  *
  *
  * @return
  *
  */
 public String getDetail() {
  return m.toString();
  // TODO: Add your code here
 }

 /**
  * Method getType
  *
  *
  * @return
  *
  */
 public int getType() {
  return METHOD;
  // TODO: Add your code here
 }

 /**
  * Method getOrder
  *
  *
  * @return
  *
  */
 public int getOrder() {
  return order;
  // TODO: Add your code here
 } 
 public String toString(){
  return getName();
 }
}



package treeroot.reflect;

import treeroot.reflect.Node;
import java.util.List;
import java.lang.reflect.*;
public class InterfaceNode implements Node {
 
 private Class c;
 private int order;
 private List childs;
 
 public InterfaceNode(Class c){
  this(c,0);
 }
 
 public InterfaceNode(Class c,int order){
  if(!c.isInterface()){
   throw new RuntimeException("InterfaceNode must accept a Interface!");
  }
  this.c=c;
  this.order=order;
 }
 
 /**
  * Method setChilds
  *
  *
  * @param parm1
  *
  */
 public void setChilds(List parm1) {
  this.childs=parm1;
  // TODO: Add your code here
 }

 /**
  * Method hasChild
  *
  *
  * @return
  *
  */
 public boolean hasChild() {
  return (childs!=null)&&(childs.size()>0);
  // TODO: Add your code here
 }

 /**
  * Method getChilds
  *
  *
  * @return
  *
  */
 public List getChilds() {
  return childs;
  // TODO: Add your code here
 }

 /**
  * Method getName
  *
  *
  * @return
  *
  */
 public String getName() {
  return c.getName();
  // TODO: Add your code here
 }

 /**
  * Method toString
  *
  *
  * @return
  *
  */
 public String toString() {
  return "<html><i>"+getName()+"</i></html>";
  // TODO: Add your code here
 }

 /**
  * Method getDetail
  *
  *
  * @return
  *
  */
 public String getDetail() {
  StringBuffer sb=new StringBuffer(Modifier.toString(c.getModifiers()));
  
  sb.append(c.getName());
  Class[] inters=c.getInterfaces();
  if(inters.length>0){
   sb.append(" implements ");
   for(int i=0;i<inters.length;i++){
    sb.append(inters[i].getName());
    sb.append(',');
   }
   sb.setLength(sb.length()-1);
  }
  return sb.toString();  
  
  
  // TODO: Add your code here
 }

 /**
  * Method getType
  *
  *
  * @return
  *
  */
 public int getType() {
  return INTERFACE;
  // TODO: Add your code here
 } 
 public int getOrder(){
  return order;
 }
}


package treeroot.reflect;

import treeroot.reflect.Node;
import java.util.List;
import java.lang.reflect.Modifier;
import java.lang.reflect.Field;

public class FieldNode implements Node {
 
 private int order;
 private int mode;
 private Field field;
 
 public FieldNode(Field field){
  this(field,0);
 }
 public FieldNode(Field field,int order){
  this.field=field;
  this.order=order;
 }
 
 /**
  * Method setChilds
  *
  *
  * @param parm1
  *
  */
 public void setChilds(List parm1) {
  throw new UnsupportedOperationException("Field can hava Child Nodes!");
  // TODO: Add your code here
 }

 /**
  * Method hasChild
  *
  *
  * @return
  *
  */
 public boolean hasChild() {
  return false;
  // TODO: Add your code here
 }

 /**
  * Method getChilds
  *
  *
  * @return
  *
  */
 public List getChilds() {
  //you should call the hasChild() to test.
  throw new UnsupportedOperationException("Field can hava Child Nodes!");
  // TODO: Add your code here
 }

 /**
  * Method getName
  *
  *
  * @return
  *
  */
 public String getName() {
  return field.getName();
  // TODO: Add your code here
 }

 

 /**
  * Method getDetail
  *
  *
  * @return
  *
  */
 public String getDetail() {
  return field.toString();
  // TODO: Add your code here
 }

 /**
  * Method getType
  *
  *
  * @return
  *
  */
 public int getType() {
  return FIELD;
  // TODO: Add your code here
 } 
 
 
 public int getOrder(){
  return order;
 }
 public String toString(){
  return getName();
 }
}



package treeroot.reflect;

import treeroot.reflect.Node;
import java.util.List;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

public class ConstructorNode implements Node {
 
 private Constructor con;
 private int order;
 
 public ConstructorNode(Constructor con){
  this(con,0);
 }
 public ConstructorNode(Constructor con,int order){
  this.con=con;
  this.order=order;
 }
 /**
  * Method setChilds
  *
  *
  * @param parm1
  *
  */
 public void setChilds(List parm1) {
  throw new UnsupportedOperationException("ConstructorNode has no child!");
  // TODO: Add your code here
 }

 /**
  * Method hasChild
  *
  *
  * @return
  *
  */
 public boolean hasChild() {
  return false;
  // TODO: Add your code here
 }

 /**
  * Method getChilds
  *
  *
  * @return
  *
  */
 public List getChilds() {
  throw new UnsupportedOperationException("ConstructorNode has no child!");
  // TODO: Add your code here
 }

 /**
  * Method getName
  *
  *
  * @return
  *
  */
 public String getName() {
  return con.getName()+ Helper.getParams(getDetail());
  // TODO: Add your code here
 }

 /**
  * Method getDetail
  *
  *
  * @return
  *
  */
 public String getDetail() {
  return con.toString();
  // TODO: Add your code here
 }

 /**
  * Method getType
  *
  *
  * @return
  *
  */
 public int getType() {
  return CONSTRUCTOR;
  // TODO: Add your code here
 }

 /**
  * Method getOrder
  *
  *
  * @return
  *
  */
 public int getOrder() {
  return order;
  // TODO: Add your code here
 } 
 public String toString(){
  return getName();
 }
}


package treeroot.reflect;

import treeroot.reflect.Node;
import java.util.List;
import java.lang.reflect.*;
public class ClassNode implements Node {
 
 private Class c;
 private int order;
 private List childs;
 
 public ClassNode(Class c){
  this(c,0);
 }
 public ClassNode(Class c,int order){
  if(c.isInterface()||c.isArray()||c.isPrimitive()){
   throw new RuntimeException("ClassNode must accept a Class!");
  }
  this.c=c;
  this.order=order;
 }
 
 
 /**
  * Method setChilds
  *
  *
  * @param parm1
  *
  */
 public void setChilds(List parm1) {
  this.childs=parm1;
  // TODO: Add your code here
 }

 /**
  * Method hasChild
  *
  *
  * @return
  *
  */
 public boolean hasChild() {
  return (childs!=null)&&(childs.size()>0);
  // TODO: Add your code here
 }

 /**
  * Method getChilds
  *
  *
  * @return
  *
  */
 public List getChilds() {
  return childs;
  // TODO: Add your code here
 }

 /**
  * Method getName
  *
  *
  * @return
  *
  */
 public String getName() {
  return c.getName();
  // TODO: Add your code here
 }

 /**
  * Method toString
  *
  *
  * @return
  *
  */
 public String toString() {
  return "<html><b>"+getName()+"</b></html>";// TODO: Add your code here
 }

 /**
  * Method getDetail
  *
  *
  * @return
  *
  */
 public String getDetail() {
  StringBuffer  sb=new StringBuffer(Modifier.toString(c.getModifiers()));
  sb.append(" ");
  sb.append(c.getName());
  Class superClass=c.getSuperclass();
  
  if(superClass!=null){
   sb.append(" extends ");
   sb.append(superClass.getName());
  }
  
  Class[] inters=c.getInterfaces();
  
  if(inters.length>0){
   sb.append(" implements ");
   for(int i=0;i<inters.length;i++){
    sb.append(inters[i].getName());
    sb.append(',');
   }
   sb.setLength(sb.length()-1);
  }
  return sb.toString();  
 }

 /**
  * Method getType
  *
  *
  * @return
  *
  */
 public int getType() {
  return CLASS;
  // TODO: Add your code here
 }
 public int getOrder(){
  return order;
 } 
}


package treeroot.reflect;

class Helper {
 static String getParams(String s){
  return s.substring(s.indexOf('('),s.indexOf(')')+1);  
 }
}


package treeroot.reflect;

import java.util.*;
import java.lang.reflect.*;
public class ClassMeta {
 public static Node getClassTree(Class c){
  //
  Node root;
  if(c.isInterface()){
   root=new InterfaceNode(c);
  }
  else{
   root=new ClassNode(c);
  }
  List childs=new ArrayList();
  
  //add super class as first node,if the class if Object.class,break recursion.
  //only Class has the superClass.

   
  Class superClass=c.getSuperclass();
  if(superClass!=null)
   childs.add(getClassTree(superClass));
  
  //add the inteferaces 
  //Class or Interface must have the Interfaces
    
  Class[] inters= c.getInterfaces();
  for(int i=0;i<inters.length;i++){
   childs.add(getClassTree(inters[i]));
  }
  
  //add the constructors
  //Only Class have the Constructors.
  
  Constructor[] cons=c.getConstructors();
  for(int i=0;i<cons.length;i++){   
   childs.add(new ConstructorNode(cons[i]));
  }
  
  
  //add the methods
  Method[] methods=c.getDeclaredMethods();
  for(int i=0;i<methods.length;i++){
   childs.add(new MethodNode(methods[i]));
  }
  
  
  //add the fields
  Field[] fields=c.getDeclaredFields();
  for(int i=0;i<fields.length;i++){
   childs.add(new FieldNode(fields[i])); 
  }
  root.setChilds(childs);
  return root;
 }
 
}


//以下是图形界面了

package treeroot.classviewer;

import treeroot.reflect.Node;
import treeroot.reflect.ClassMeta;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.*;
import javax.swing.tree.*;
import javax.swing.event.*;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.JScrollPane;


public class ClassViewer extends JPanel {
 JTree tree;
 DefaultTreeModel model;
 JPanel detail=new JPanel();
 JLabel lbl=new JLabel("the Detail Message");
 private DefaultMutableTreeNode getRoot(Node node){
  DefaultMutableTreeNode root=new DefaultMutableTreeNode(node);
  if(node.hasChild()){
  
   List childs=node.getChilds();
   for(int i=0;i<childs.size();i++){ 
    root.add(getRoot((Node)childs.get(i)));
   }
  }
  return root;  
 }
 public ClassViewer(){
  DefaultMutableTreeNode root=getRoot(ClassMeta.getClassTree(Object.class));
  model=new DefaultTreeModel(root);
  tree=new JTree(model);
  TreeSelectionModel selectModel =new DefaultTreeSelectionModel();
  selectModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
  tree.setSelectionModel(selectModel);
  tree.addTreeSelectionListener(new TreeSelectionListener(){
   public void valueChanged(TreeSelectionEvent e){
    DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
    if(node!=null){
     Node n=(Node)node.getUserObject();
     lbl.setText(n.getDetail());
    }
   }
  }
  );
  this.setLayout(new BorderLayout());
  this.add(new JScrollPane(tree),BorderLayout.CENTER);
  detail.add(lbl);
  this.add(detail,BorderLayout.SOUTH);
 }
 void setTree(Node treeRoot){
  DefaultMutableTreeNode root=getRoot(treeRoot);
  model=new DefaultTreeModel(root);
  tree.setModel(model);
  this.updateUI();
 }
}

package treeroot.classviewer;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;
import treeroot.reflect.*;
import javax.swing.tree.*;

public class MainFrame extends JFrame{
 private JTextField txtClass=new JTextField("java.lang.Object",20);
 private JButton btnClass=new JButton("confirm");
 private JPanel topPanel=new JPanel();
 ClassViewer tree=new ClassViewer();
 public MainFrame(){
  this.setTitle("Class Viewer");
  
  Toolkit kit=Toolkit.getDefaultToolkit();
  Dimension d=kit.getScreenSize();
  int width=d.width;
  int height=d.height;
  
  this.setLocation((width-WIDTH)/2,(height-HEIGHT)/2);  
  this.setSize(WIDTH,HEIGHT);
  //this.setResizable(false);
  
  topPanel.add(txtClass);
  topPanel.add(btnClass);
  btnClass.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    Class c=null;
    try{
     String cls=txtClass.getText().trim();
     c=Class.forName(cls);
    }
    catch(ClassNotFoundException ex){
     JOptionPane.showMessageDialog(null,"can find the class!");
     return;
    }
    Node root=ClassMeta.getClassTree(c); 
    tree.setTree(root);
   }
  }
  );
  this.getContentPane().add(topPanel,BorderLayout.NORTH);
  this.getContentPane().add(tree,BorderLayout.CENTER);
 }
 
 public static void main(String[] args){
  MainFrame main=new MainFrame();
  //main.pack();
  main.show();
 }
 private static int WIDTH=800;
 private static int HEIGHT=600;
 
}

 


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/treeroot/archive/2004/12/29/232826.aspx

STM32F103上跑mbedtls 2.24.0:手把手教你为MQTTS加密通信打好基础 本文详细介绍了如何在STM32F103上移植和裁剪mbedtls 2.24.0,为MQTTS加密通信打下坚实基础。通过版本选择、开发环境配置、深度裁剪策略和加密功能验证,帮助开发者在资源受限的MCU上实现安全通信。文章还提供了常见问题解决方案和性能优化技巧,助力物联网设备开发。 阅读详情

相关推荐

ZYNQ开发(2)在Linux系统层上PL-PS通过AXI-DMA传输数据详细步骤及注意事项

参考的网络资料 https://github.com/bperez77/xilinx_axidma/tree/master https://gitlab.gnome.org/HosseinBeheshti/UlteraZed7EV/-/tree/master/petalinux/xilinx_axidma https://www.icode9.com/content-3-925319.html https://blog.youkuaiyun.com/weixin_38218267/article/details/1

aizaiyueye的专栏 3448

java内嵌浏览器的几种方式

最近遇到一个特殊的项目需求,就是需要在一个屏幕上打开多个窗口大小不同的浏览器、并且显示不同的页面。因为是需要浏览器无边框的,在网上找了好多资料,发现前端好像很难实现。所以就打算采用java后台内嵌浏览器,然后实现无边框的效果。 以下几种就是笔者采用的几种内嵌浏览器方式: 1.Swing + JXBrowser jxBrowser是收费的,我在网上找的破解版 jxbrowser-6.14.j...

EverythingAtOnce的博客 2万+

让数学变得更生动manim库的使用(1)-基本概念

0、概述 数学理论与数学公式的展示总是一件很枯燥的事情,但3b1b的manim动画库在github上开源之后,让这一切变得非常简单。目前这个库已经分成两个版本一个由3b1b自身维护。但作者并没有承诺长期维护该库,所以由专门团队再次基础上研发了相应的社区版,并对该版本进行长期维护。本文的所有案例都基于社区版的官方案例。本文主要介绍该库的基本概念相关的案例,文章主要以代码为主,关键代码都有相关注释。 另外本文的运行环境维jupyter这与其他的ide环境运行代码稍微有些不同 1、类库引入已经相关测试 引

amao1998的博客 9965

Java自动化(操作浏览器)

java操作浏览器

qq_61847733的博客 5808

NGSIM数据集字段解析:从车辆轨迹到交通行为分析

本文深度解析NGSIM数据集的核心字段及其在交通行为分析中的应用。详细解读了车辆时空定位、状态属性及交互关系等关键字段,并通过高速路“幽灵堵车”和城市路口左转行为两个实战案例,展示了如何利用该数据集进行微观交通行为建模与驾驶特征提取,为交通流研究和自动驾驶算法测试提供数据基础。

weixin_29172963的博客 147

华为AC外置Portal认证方案配置步骤指南

华为AC外置Portal认证方案配置步骤指南

m0_46129105的博客 7668

Java GUI——swing内嵌浏览器

为了做java课设,学了一手Java GUI。感觉蛮有意思的,写写文章,做个视频记录一下。欢迎大家友善指出我的不足。视频链接:https://www.bilibili.com/video/BV1ph4y1k7vB/?vd_source=8d7c1080f593e4104f2330d54493ca01#reply659499074

qq_62835094的博客 3694

数字图像处理第九章笔记

目录一、腐蚀与膨胀1、腐蚀2、膨胀3、对偶性4、开操作与闭操作二、一些基本的形态学算法1、边界提取2、孔洞填充3、连通分量提取4、凸壳5、细化6、粗化7、骨架8、形态学重建三、灰度级形态学1、腐蚀和膨胀2、开运算和闭运算3、灰度级形态学算法 一、腐蚀与膨胀 1、腐蚀 腐蚀可以去除图像的某些部分。 2、膨胀 膨胀可以连接裂缝。 3、对偶性 膨胀和腐蚀彼此关于集合求补运算和反射运算是对偶的 4、开操作与闭操作 开操作:B对A先腐蚀,再进行膨胀 可以平滑物体轮廓,断开较窄的狭颈并消除较细的突出物。 闭操作

方悔读书迟 1375

java实现网页浏览器的开发

每类事件都至少需要一个事件监听类。在这里,我们需要指出的是,在列举的监听器中,只有6种是所有Swing组件都支持的,分别是ComponentListener、FocusListener、KeyListener、MouseListener、MouseMotionListener以及MouseWheelListener。而根据Java的语法要求,类必须实现接口的所有方法,于是除了被使用的方法外,其他的方法都是空的。我们的监听器类只需要继承相应的适配器类,并且重写相应的方法就可以了,其他的方法则不需要考虑了。

qq_61342324的博客 1902

【从0到1实战】C# WinForm开发工业级PLC监控系统(完整串口+Modbus RTU/TCP+数据库存储+源码+避坑指南)

做C#工控上位机开发的工程师,尤其是刚入行的新人,最核心的刚需就是开发一套完整的PLC监控系统。这也是工控领域最基础、最核心、应用最广的项目类型——小到单台PLC的设备测控,大到整线的产线监控,本质都是「上位机与PLC通讯,实现数据采集、参数下发、状态监控、数据存储」。碎片化的知识点学了很多,串口会用了、Modbus协议看了、数据库也懂点,但是始终无法把这些知识点串联起来,做出一套能落地的工业级PLC监控系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1559

Mstar的Monitor方案OSD 菜单制作(五)——icon绘制

Mstar的Monitor方案(五)————绘制icon

android 系统定制开发那些事 1807

基于 Java 的浏览器——JxBrowser使用分享

JxBrowser 是一个基于 Java 的浏览器,它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架,如 Swing、JavaFX 和 SWT,使得在 Java 应用程序中嵌入浏览器组件变得简单。JxBrowser 是一个适用于多种用途的嵌入式浏览器,它可以被用于开发混合应用程序、结账和自助服务终端、数字广告、游戏、网页抓取、自动化脚本,以及桌面和平板电脑应用程序。

Su*yWGAtH26Q 3668

大数据NiFi(十一):NiFi入门案例一

注意:数据写出的目录可以不需要提前在对应节点上创建,默认是可以自动创建,可以通过“Create Missing Directories”属性配置。将输出文件的权限设置为此属性的值,格式必须是UNIX rwxrwxrwx,用-来代替被拒绝的权限(例如rw-r--r--)或八进制数字(例如644),可以使用表达式,例如${file.permissions}。这里需要使用到的处理器是“GetFile”和“PutFile”,完成以上需求对“GetFile”和“PutFile”相关属性进行配置。

Lansonli(蓝深李)的博客 1489

Java中Desktop类和批量在浏览器打开URI

Java中Desktop类的认识和批量在浏览器打开URI

iaiti的专栏 2452

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java类浏览器

package treeroot.reflect;import java.util.List;public interface Node { int CLASS=0x10000; int INTERFACE=0x01000; int CONSTRUCTOR=0x00100; int METHOD=0x00010; int FIELD=0x00001;  void setChilds(List

treeroot的专栏 5122

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

如何使用java代码实现使用默认浏览器打开网页,java中Desktop类的介绍与使用

Desktop类在java中是jdk1.6以后新增的,在java.awt包下,它的主要功能有: 启动用户默认的浏览器显示指定的URI链接; 启动用户默认的邮件客户端发送URI指定的邮件; 启动一个注册应用程序(本地安装了的应用程序)去打开,编辑或打印一个指定的文件。 下面使用代码简单演示一下: 使用默认浏览器打开网页 public class DesktopTest { public static void main(String[] args) { // 使用默认浏览器打开网页 Desk

Coder-文小白的博客 1139

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java后台调用HttpURLConnection类模拟浏览器请求实例

这篇文章主要介绍了java后台调用HttpURLConnection类模拟浏览器请求实例,该实例可用于接口调用,具有一定的实用价值,需要的朋友可以参考下。 一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用HttpURLConnection类模拟浏览器请求的方法,可用于接口调用。分享给大家供大家参考。 具体实现方法如下: package com.pcmall; impo

木头若愚 1622

掌握IDE类浏览器与调试器:提升C++/Java开发效率的核心技能

在面向对象编程中,理解复杂的类继承结构和运行时行为是开发者的核心挑战。类浏览器作为项目的静态结构导航仪,通过图形化界面直观展示类层次、成员关系,帮助开发者快速理解代码架构,其核心原理在于对源代码的静态分析与索引构建。调试器则扮演动态程序显微镜的角色,基于符号调试信息实现程序执行流程的可控观察与中断,允许开发者逐行跟踪代码、检查变量状态。这两项技术的价值在于将抽象的代码逻辑转化为可视、可交互的分析过程,极大提升了代码理解、问题定位和系统维护的效率。在C++、Java等大型项目开发、遗留代码维护、复杂Bug排查

weixin_34112399的博客 316

JAVA不能调用DESKTOP类_Java awt Desktop 无法调用系统浏览器

用Spring boot搭建项目时,希望在项目启动完后能自动谈出首页。就用了java.awt.Desktop类if(Desktop.isDesktopSupported()){try{//弹出浏览器-显示HTTP接口(https)Desktop.getDesktop().browse(newURI("https://blog.c...

weixin_42297390的博客 804

Selenium的Actions类不能模拟键盘操作浏览器,要用java.awt的Robot类

首先,我之前运气好,查到的selenium模拟键盘操作时资料给的是用Robot类,用就是这个。直到有一天,突然脑子抽筋,看到网络上到处都说selenium键盘操作用Actions类,就想用下,结果,搞了半天,完全没用。 当然不是说对操作页面元素没用,而是操作浏览器比如“CTRL”+“+”缩放页面是没用的。 就是说selenium的Actions类模拟键盘只能操作页面元素,并且非常有限,比如keydown/keyup方法就只能操作CTRL,Alt,Shift仨键 后来还是用回了java.awt.下的Robot

m0_46152649的博客 494

java browser 类_java获取浏览器类型

public enum BrowserType {IE10, IE9, IE8, IE7, IE6, Firefox, Safari, Chrome, Opera, Camino, Gecko}/** 判断是否是IE */public static boolean isIE(HttpServletRequest request) {return request.getHeader("USER-AG...

weixin_39697660的博客 1002

java基础--网络编程之 自定义浏览器和URL类的使用

笔记摘要: 本篇文章主要介绍了浏览器的工作原理,然后通过自定义的浏览器发送请求来模拟,并介绍了URL类,该类将Socket对象封装,使用起来 更为方便,同时将使用URL对象的自定义浏览器和图形化界面相结合,实现了一个简易的图形化浏览器功能。 最后对于浏览器访问网址时的域名解析进行了解释。 一、自定义浏览器 现实中的浏览器在输入网址后,通常是发送一系列的请求消息,...

weixin_30528371的博客 187

java实现点击图片跳到网站_java实现打开浏览器并跳到指定网址的类

package com.leon.test;import java.lang.reflect.Method;// 实现打开浏览器并跳到指定网址的类public class BareBonesBrowserLaunch {/*** 方法描述:打开浏览器** @author leon 2016年10月28日 下午4:37:35* @param url 打开的url* @throws Exception...

weixin_39998795的博客 497

Java URLConnection 类,通过设置浏览器类型来解决访问受限问题

我想用URL类实现访问网页的内容,可是总是报403错误, Java code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  public static void main(String[] args) throws Exception

georgelife7的专栏 1151

java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

这篇文章主要介绍了Java后台调用HttpURLConnection类模拟浏览器请求实例,该实例可用于接口调用,具有一定的实用价值,需要的朋友可以参考下 一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用HttpURLConnection类模拟浏览器请求的方法。可用于接口调用。分享给大家供大家参考。具体实现方法如下: package com.cntv.servi

Jason763的博客 5006

JApplet 是 Java AWT (Abstract Window Toolkit) 的一部分,它是一个用于创建在 Web 浏览器中运行的 Java 小应用程序的类

要使用 JApplet,你需要编写一个继承自 JApplet 的类,并在其中实现必要的方法和功能。需要注意的是,随着浏览器的更新和安全性的提高,许多现代浏览器不再支持 Java 小应用程序。JApplet 是 Java AWT (Abstract Window Toolkit) 的一部分,它是一个用于创建在 Web 浏览器中运行的 Java 小应用程序的类。使用 JApplet,你可以创建具有图形用户界面 (GUI) 的应用程序,这些应用程序可以在任何支持 Java 的 Web 浏览器中运行。

[Blog][Domain] programb.blog.youkuaiyun.com 2584
上一篇: Java NIO 拷贝文件(使用compact)
下一篇: Java动态绑定的细节
topinking
博客等级 码龄20年 15粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值