java画图板java画板程序

java画图板  时间:2021-01-16  阅读:()

java小画板程序该怎么做,大部分教程到最后都没舍得给一个几十行代码的小例子

import java.awt.BorderLayout; //布局管理器的一种,一个面板分东南西北中五个区, 用于放置控间,这样GUI在放大缩小,移植的时候方便 import java.awt.Button; import java.awt.Color; import java.awt.Container;// 一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件 import java.awt.Graphics; //定义一个真正的工具,用来接受图形操作 import java.awt.Panel; // Panel 是最简单的容器类 import java.awt.event.ActionEvent; //知道如何对自身进行指派的事件的接口 import java.awt.event.ActionListener; //用于接收操作事件的侦听器接口 import java.awt.event.MouseAdapter; //接收鼠标事件的抽象适配器类 import java.awt.event.MouseEvent; //鼠标事件 import java.awt.event.MouseListener; //用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。

import java.awt.event.MouseMotionAdapter; //接收鼠标移动事件的适配器 import java.awt.event.MouseMotionListener; //用于接收组件上的鼠标移动事件的侦听器接口 import javax.swing.ButtonGroup; //此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域 import javax.swing.JFrame; //java.awt.Frame 的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持 import javax.swing.JPanel; JPanel //是一般轻量级容器 import javax.swing.UIManager; //此类跟踪当前的外观及其默认设置 //import javax.swing.Component; //对数据和方法的简单封装 Public class ShapeMain extends JFrame implements ActionListener,MouseListener,MouseMotionListener{ int x,y,x1,y1,x2,y2,width,height; boolean isFirstPoint = true; //初始化开始画的是线 int drawType = PaintingGround.LINE; //初始化开始不是填充 boolean isFill = false; //添加控件 ButtonGroup btg = new ButtonGroup(); Button btLine = new Button("线"); Button btRectangle = new Button("矩形"); Button btRound = new Button("圆"); Button btEllipse = new Button("椭圆"); Button tbFillState = new Button("填充"); Button button3 = new Button("文本操作"); Button button2 = new Button("清除"); Button button1 = new Button("选择颜色"); Panel buttonPanel = new Panel(); PaintingGround paintingGround = new PaintingGround(); //Main Method public static void main(String[] args) { //设置显示外观 try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }catch(Exception e) { e.printStackTrace(); } new ShapeMain(); } //构造函数 public ShapeMain() { //控件添加到控件组中 // btg.add(btLine); // btg.add(btRectangle); // btg.add(btRound); // btg.add(btEllipse); buttonPanel.add(btLine); buttonPanel.add(btRectangle); buttonPanel.add(btRound); buttonPanel.add(btEllipse); buttonPanel.add(tbFillState); //设置容器及容器的整体布局 Container cp = this; cp.setLayout(new BorderLayout()); cp.add(BorderLayout.NORTH,buttonPanel); cp.add(BorderLayout.CENTER,paintingGround); //cp.add(BorderLayout.SOUTH,jf); //jf.setJMenuBar(mb); setLocation(300,150); setSize(600,480); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); //添加鼠标触发事件 paintingGround.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent evn) { isFirstPoint = true; } }); //对鼠标的输入进行判断并调用画图程序 paintingGround.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent evn) { if(isFirstPoint) { x1 = evn.getX(); y1 = evn.getY(); isFirstPoint = false; } else { x2 = evn.getX(); y2 = evn.getY(); switch(drawType) { case PaintingGround.LINE: //画线 paintingGround.drawLine(x1,y1,x2,y2); break; case PaintingGround.RECTANGLE: //画矫形 paintingGround.drawRect(x1,y1,x2-x1,y2-y1); break; case PaintingGround.ROUND: //画圆 //两点距离公式 int size = Math.abs((int)Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))); paintingGround.drawRound(x1,y1,size); break; case PaintingGround.ELLIPSE: //画椭圆 paintingGround.drawEllipse(x1,y1,x2-x1,y2-y1); break; default: break; }}}}); //各个控件的触发事件 btLine.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.LINE; }}); btRectangle.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.RECTANGLE; }}); btRound.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.ROUND; }}); btEllipse.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { drawType = PaintingGround.ELLIPSE; }}); tbFillState.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evn) { isFill = tbFillState.isShowing(); paintingGround.setFillState(isFill); }});} public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub } public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } } class PaintingGround extends JPanel { public static final int LINE = 1; public static final int RECTANGLE = 2; public static final int ROUND = 3; public static final int ELLIPSE = 4; private int x,y; private int x1,y1,x2,y2; private int width, height,size; private int drawType = 0; private boolean isFill = false; //构造函数 public PaintingGround() { setBackground(Color.black); } //判断是用实心还是空心的, public void paint(Graphics g) { super.paint(g); g.setColor(Color.white); if(isFill) { switch(drawType) { case LINE: g.drawLine(x1,y1,x2,y2); break; case RECTANGLE: g.fillRect(x,y,width,height); break; case ROUND: g.fillOval(x,y,size,size); break; case ELLIPSE: g.fillOval(x,y,width,height); break; default: break; }} else { switch(drawType) { case LINE: g.drawLine(x1,y1,x2,y2); break; case RECTANGLE: g.drawRect(x,y,width,height); break; case ROUND: g.drawOval(x,y,size,size); break; case ELLIPSE: g.drawOval(x,y,width,height); break; default: break; } } } public void drawLine(int x1, int y1, int x2,int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; drawType = LINE; repaint(); } //具体的实现方式 public void drawRect(int x,int y,int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; drawType = RECTANGLE; repaint(); } public void drawRound(int x,int y,int size) { this.x = x; this.y = y; this.size = size; drawType = ROUND; repaint(); } public void drawEllipse(int x,int y,int width,int height) { this.x = x; this.y = y; this.width = width; this.height = height; drawType = ELLIPSE; repaint(); } public void setFillState(boolean isFill) { this.isFill = isFill; } }//注:来自网络,不喜勿喷,若侵犯版权,请与我联系

JAVA实现简单的画图板

楼主写一个html,很容易把下面代码嵌入到applet,可以google一下实现, 还有copy自己不知道算不算复制。





-_-! -------------------------------------------------------------------- 楼主给你一个我的,直接保存成pb.java编译运行,就是你要的画图功能 ,可以参考一下 ____________________________________________________________________ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.awt.geom.*; import java.io.*; class Point implements Serializable { int x,y; Color col; int tool; int boarder; Point(int x, int y, Color col, int tool, int boarder) { this.x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; } } class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener { int x = -1, y = -1; int con = 1;//画笔大小 int Econ = 5;//橡皮大小 int toolFlag = 0;//toolFlag:工具标记 //toolFlag工具对应表: //(0--画笔);(1--橡皮);(2--清除); //(3--直线);(4--圆);(5--矩形); Color c = new Color(0,0,0); //画笔颜色 BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细 Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 Vector paintInfo = null;//点信息向量组 int n = 1; FileInputStream picIn = null; FileOutputStream picOut = null; ObjectInputStream VIn = null; ObjectOutputStream VOut = null; // *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 颜色,大小B,大小E; //保存功能 Button openPic,savePic; FileDialog openPicture,savePicture; paintboard(String s) { super(s); addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /*各工具按钮及选择项*/ //颜色选择 ColChoice = new Choice(); ColChoice.add("black"); ColChoice.add("red"); ColChoice.add("blue"); ColChoice.add("green"); ColChoice.addItemListener(this); //画笔大小选择 SizeChoice = new Choice(); SizeChoice.add("1"); SizeChoice.add("3"); SizeChoice.add("5"); SizeChoice.add("7"); SizeChoice.add("9"); SizeChoice.addItemListener(this); //橡皮大小选择 EraserChoice = new Choice(); EraserChoice.add("5"); EraserChoice.add("9"); EraserChoice.add("13"); EraserChoice.add("17"); EraserChoice.addItemListener(this); //////////////////////////////////////////////////// toolPanel = new Panel(); clear = new Button("清除"); eraser = new Button("橡皮"); pen = new Button("画笔"); drLine = new Button("画直线"); drCircle = new Button("画圆形"); drRect = new Button("画矩形"); openPic = new Button("打开图画"); savePic = new Button("保存图画"); colchooser = new Button("显示调色板"); //各组件事件监听 clear.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); openPic.addActionListener(this); savePic.addActionListener(this); colchooser.addActionListener(this); 颜色 = new Label("画笔颜色",Label.CENTER); 大小B = new Label("画笔大小",Label.CENTER); 大小E = new Label("橡皮大小",Label.CENTER); //面板添加组件 toolPanel.add(openPic); toolPanel.add(savePic); toolPanel.add(pen); toolPanel.add(drLine); toolPanel.add(drCircle); toolPanel.add(drRect); toolPanel.add(颜色); toolPanel.add(ColChoice); toolPanel.add(大小B); toolPanel.add(SizeChoice); toolPanel.add(colchooser); toolPanel.add(eraser); toolPanel.add(大小E); toolPanel.add(EraserChoice); toolPanel.add(clear); //工具面板到APPLET面板 add(toolPanel,BorderLayout.NORTH); setBounds(60,60,900,600); setVisible(true); validate(); //dialog for save and load openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD); openPicture.setVisible(false); savePicture = new FileDialog(this,"保存图画",FileDialog.SAVE); savePicture.setVisible(false); openPicture.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { openPicture.setVisible(false); } }); savePicture.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { savePicture.setVisible(false); } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; Point p1,p2; n = paintInfo.size(); if(toolFlag==2) g.clearRect(0,0,getSize().width,getSize().height);//清除 for(int i=0; ijava 画图程序import java.awt.*; import javax.swing.*; public class Demo_01 extends JFrame{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Demo_01 d=new Demo_01(); } //创建画板 public Demo_01(){ //定义画板的大小 this.setSize(700,600); //可见性 this.setVisible(true); //退出画板 this.setDefaultCloseOperation(EXIT_ON_CLOSE); } //创建画笔 ——重写父类方法 public void paint (Graphics g){ super.paint(g); //设置画圆的画笔的颜色 g.setColor(Color.yellow); //画圆 g.drawOval(40, 40, 50, 50); //设置画矩形画笔的颜色 g.setColor(Color.blue); //画矩形 g.drawRect(40, 100, 80, 100); //设置直线的画笔的颜色 g.setColor(Color.red); //画直线 g.drawLine(160, 120, 300, 120); } }

用Java实现画图板功能的程序,请问如何编写一个绘制三角形的程序段

class Triangle extends drawings//空心三角形类 { void draw(Graphics2D g2d) {g2d.setPaint(new Color(R,G,B)); g2d.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL)); g2d.drawLine((int)((x1+x2)/2),Math.min(y1,y2),Math.max(x1,x2),Math.max(y1,y2)); g2d.drawLine(Math.max(x1,x2),Math.max(y1,y2),Math.min(x1,x2),Math.max(y1,y2)); g2d.drawLine(Math.min(x1,x2),Math.max(y1,y2),(int)((x1+x2)/2),Math.min(y1,y2)); } } 以上是通过绘制三条直线作为三角形的三条边来绘制三角形. class fillTriangle extends drawings//实心三角形 { void draw(Graphics2D g2d) {g2d.setPaint(new Color(R,G,B)); g2d.setStroke(new BasicStroke(stroke)); int mx=(int)((x1+x2)/2); int[] x={mx,Math.max(x1,x2),Math.min(x1,x2)}; int[] y={Math.min(y1,y2),Math.max(y1,y2),Math.max(y1,y2)}; g2d.fillPolygon(x,y,3); } } 以上是用填充多边形的方式填充一个三角形,如果把最后的:g2d.fillPolygon(x,y,3)改为g2d.drawPolygon(x,y,3); 则是以绘制多边形的方式绘制空心三角形. 这里说明一下:因为(x1,y1,x2,y2)只能确定一个矩形区域,即鼠标拉动的起点和终点确定的矩形区域所以可以有多种方式确定三角形的三个顶点,我这个用的三个顶点是: 点1( (x1+x2)/2, min(y) ) 点2( max(x),max(y) ) 点3( min(x),max(y) ) 你的补充内容太多了,没心情看啊,太累了

java画板程序

package draw; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.io.*; import java.util.*; import javax.swing.*; //the point //impress the info of one point,the x and y class OnePoint implements Serializable { int x; int y; int tool; Color c; int border; public OnePoint(int x,int y,int tool,,int border) { this.x=x; this.y=y; this.tool=tool; ; this.border=border; } public static void main(String[] args) { DrawingBoard oneBorder=new DrawingBoard(); } } class DrawingBoard extends Frame implements MouseListener,ItemListener,ActionListener,MouseMotionListener { Button pen,line,ellipse,rect,clear,colorboard,storebutton,openbutton; Choice sizechoice,colorchoice ; Label pensize, pencolor; Panel panel ; FileDialog storefile, openfile; FileInputStream filein; FileOutputStream fileout; ObjectInputStream objectin; ObjectOutputStream objectout; int mode=0; int flagtool=0; Color flagcolor; int border; BasicStroke size; private Point2D[] p=new Point2D[3];; OnePoint p1,p2; Vector<OnePoint> points=new Vector<OnePoint>(); public DrawingBoard() { pen=new Button("画笔"); line=new Button("直线"); ellipse=new Button("圆"); rect=new Button("矩形"); clear=new Button("清除"); colorboard=new Button("调色板"); storebutton=new Button("存储文件"); openbutton=new Button("打开文件"); pensize=new Label("画笔大小"); pencolor=new Label("画笔颜色"); storefile=new FileDialog(this,"存储文件",FileDialog.SAVE); storefile.setVisible(false); storefile.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ storefile.setVisible(false); } }); openfile=new FileDialog(this,"打开文件",FileDialog.LOAD); openfile.setVisible(false); openfile.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ openfile.setVisible(false); } }); sizechoice=new Choice(); sizechoice.add("1"); sizechoice.add("2"); sizechoice.add("4"); sizechoice.add("6"); sizechoice.add("8"); sizechoice.addItemListener(this); colorchoice=new Choice(); colorchoice.add("black"); colorchoice.add("red"); colorchoice.add("blue"); colorchoice.add("green"); colorchoice.addItemListener(this); pen.addActionListener(this); line.addActionListener(this); ellipse.addActionListener(this); rect.addActionListener(this); clear.addActionListener(this); colorboard.addActionListener(this); storebutton.addActionListener(this); openbutton.addActionListener(this); panel=new Panel(); panel.add(storebutton); panel.add(openbutton); panel.add(pen); panel.add(line); panel.add(ellipse); panel.add(rect); panel.add(clear); panel.add(sizechoice); panel.add(pensize); panel.add(colorchoice); panel.add(pencolor); panel.add(colorboard); add(panel,BorderLayout.NORTH); setBounds(100,100,700,600); setVisible(true); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); /** * 添加鼠标事件的监听器,否则,鼠标的移动和点击都将无法识别! * */ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g) { Graphics2D g2d=(Graphics2D)g; if(flagtool==2) { //qing chu g.clearRect(0,0,getSize().width,getSize().height); } for(int i=0;i<points.size()-1;i++) { p1=(OnePoint)points.elementAt(i); p2=(OnePoint)points.elementAt(i+1); g2d.setColor(p1.c); //////////////需要使用Graphics2D从Graphics类中继承下来的方法 setColor()设置当前的颜色 size=new BasicStroke(p1.border,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); g2d.setStroke(size); if(p1.tool==p2.tool) { switch(p1.tool) { case 0: Line2D.Double line1=new Line2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line1); break; case 1: Line2D.Double line2=new Line2D.Double(p1.x,p1.y,p2.x,p2.y); g2d.draw(line2); break; case 3: Ellipse2D.Double ellipse=new Ellipse2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(ellipse); break; case 4: Rectangle2D.Double rect=new Rectangle2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y)); g2d.draw(rect); break; default: } } } } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) //鼠标点下时候,将当前的点信息记录 { mode=0; p[0]=e.getPoint(); OnePoint pp1=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); points.addElement(pp1); //repaint(); } public void mouseReleased(MouseEvent e) //鼠标松开时候,如果是画笔,则当前截断,是其余状态记下一枚点信息 { mode=1; if(flagtool==0) { points.addElement(new OnePoint(-1,-1,22,flagcolor,border)); } else { OnePoint pp2=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); points.addElement(pp2); points.add(new OnePoint(-1,-1,22,flagcolor,border)); } repaint(); } public void itemStateChanged(ItemEvent e) { if(e.getSource()==colorchoice) { String selected=colorchoice.getSelectedItem(); if(selected=="black"){flagcolor=new Color(0,0,0); } else if(selected=="red"){flagcolor=new Color(255,0,0); } else if(selected=="blue"){ flagcolor=new Color(0,0,255);} else if(selected=="green"){ flagcolor=new Color(0,255,0); } } else if(e.getSource()==sizechoice) { String selected=sizechoice.getSelectedItem(); if (selected=="1"){ border=1; } else if(selected=="2"){ border=2*2; } else if(selected=="4"){ border=4*2; } else if(selected=="6"){ border=6*2; } else if(selected=="8"){ border=8*2; } } } /*public void update(Graphics g) { //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ paint(g); } */ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==pen){flagtool=0; } else if(e.getSource()==line){ flagtool=1; } else if(e.getSource()==clear) { flagtool=2; points.removeAllElements(); repaint(); //此语要有,否则今生无法删除! } else if(e.getSource()==ellipse){ flagtool=3; } else if(e.getSource()==rect){ flagtool=4; } else if(e.getSource()==colorboard) { /* * 使用 javax.swing.×包中的 JColorChooser 类的静态方法showDialog(ponent,String title,Color color ), * 该方法的参数ponent是当前显示对话框的父框架,color是设置调色板初始的被选颜色 * * 该方法返回被选的颜色,类型为Color * */ Color color=JColorChooser.showDialog(this, "调色板",flagcolor); flagcolor=color; } else if(e.getSource()==openbutton) { openfile.setVisible(true); if(openfile.getFile()!=null) { int temp=flagtool; flagtool=2; repaint(); try{ points.removeAllElements(); File file=new File(openfile.getDirectory(),openfile.getFile()); filein=new FileInputStream(file); objectin=new ObjectInputStream(filein); points=(Vector)objectin.readObject(); objectin.close(); filein.close(); flagtool=temp; repaint(); } catch(Exception ee){ System.out.println(ee.toString()); } } } else if(e.getSource()==storebutton) { storefile.setVisible(true); if(storefile.getFile()!=null) { try { File file=new File(storefile.getDirectory(),storefile.getFile()); fileout=new FileOutputStream(file); objectout=new ObjectOutputStream(fileout); objectout.writeObject(points); objectout.close(); fileout.close(); repaint(); } catch (FileNotFoundException e1) { System.out.println(e1.toString()); e1.printStackTrace(); } catch (IOException ee) { System.out.println(ee.toString()); ee.printStackTrace(); } } } } public void mouseDragged(MouseEvent e) //鼠标拖动时候,//当且仅当 flagtool==0,或者表示为橡皮的时候 //才将拖动过程中涉及到的点全部记录下来,并且调用repain()方法,重画当前 // TODO Auto-generated method stub { if(flagtool==0) { OnePoint pp3=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); points.addElement(pp3); repaint(); } if(flagtool==1) { OnePoint pp3=new OnePoint(e.getX(),e.getY(),flagtool,flagcolor,border); repaint(); } } public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } }

香港 E5-2650 16G 10M 900元首月 美国 E5-2660 V2 16G 100M 688元/月 华纳云

华纳云双11钜惠出海:CN2海外物理服务器终身价688元/月,香港/美国机房,免费送20G DDos防御,50M CN2或100M国际带宽可选,(文内附带测评)华纳云作为一家专业的全球数据中心基础服务提供商,总部在香港,拥有香港政府颁发的商业登记证明,APNIC 和 ARIN 会员单位。主营香港服务器、美国服务器、香港/美国OpenStack云服务器、香港高防物理服务器、美国高防服务器、香港高防I...

ucloud香港服务器优惠活动:香港2核4G云服务器低至358元/年,968元/3年

ucloud香港服务器优惠降价活动开始了!此前,ucloud官方全球云大促活动的香港云服务器一度上涨至2核4G配置752元/年,2031元/3年。让很多想购买ucloud香港云服务器的新用户望而却步!不过,目前,ucloud官方下调了香港服务器价格,此前2核4G香港云服务器752元/年,现在降至358元/年,968元/3年,价格降了快一半了!UCloud活动路子和阿里云、腾讯云不同,活动一步到位,...

【IT狗】在线ping,在线tcping,路由追踪

IT狗为用户提供 在线ping、在线tcping、在线路由追踪、域名被墙检测、域名被污染检测 等实用工具。【工具地址】https://www.itdog.cn/【工具特色】1、目前同类网站中,在线ping 仅支持1次或少量次数的测试,无法客观的展现目标服务器一段时间的网络状况,IT狗Ping工具可持续的进行一段时间的ping测试,并生成更为直观的网络质量柱状图,让用户更容易掌握服务器在各地区、各线...

java画图板为你推荐
百度k站百度k站为什么可以发外链的论坛有哪些可以发外链的论坛?cornerradiuscorner radius是什么意思安装程序配置服务器失败win10安装程序配置服务器失败怎么办拂晓雅阁推荐一些好玩的贴图论坛万网核心代理万网代理商?中国万网认证核心分销商?快速美白好方法脸部快速美白有什么好方法啊flash导航条FLASH导航条 怎么加入链接?依赖注入请问下依赖注入的三种方式的区别如何建立一个网站如何建立一个网站?
韩国vps俄罗斯美女 阿里云os 国内免备案主机 便宜域名 rak机房 美国便宜货网站 天猫双十一秒杀 牛人与腾讯客服对话 卡巴斯基官方免费版 免费全能主机 免费mysql数据库 香港亚马逊 架设邮件服务器 linode支付宝 中国linux 免费蓝钻 阿里dns 江苏双线 国外代理服务器 中国电信宽带测速 更多