我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaMe中怎么使用TextEdit绘制文本框

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaMe中怎么使用TextEdit绘制文本框

这期内容当中小编将会给大家带来有关JavaMe中怎么使用TextEdit绘制文本框,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1 运用Graphics、GameCanvas绘制文本框和光标。

2 检测到输入事件时,跳转到 高级界面->TextBox 。通过系统调用输入法完成输入。

3 将TextBox输入的值返回给TextEdit对象。

【设计模式】

这个过程有点类似装饰模式,实际上,实现输入的还是TextBox,只是给TextBox装饰了一下,形成了一个漂亮的外观。

【代码清单】

TextEdit.java

package com.token.view.components;   import javax.microedition.lcdui.Font;  import javax.microedition.lcdui.Graphics;  import javax.microedition.lcdui.game.GameCanvas;   public class TextEdit extends GameCanvas  {      private Font ft;            public int width;      public int height;            public TextEdit(GameCanvas canvas)       {          super(false);                }            //绘制文本框      public void drawTextBox(GameCanvas canvas, Graphics graphics, String text, int x, int y, boolean cursorBlinkOn)      {          //System.out.println("draw");          int padding = 4;          int margin = 2;                    ft = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_MEDIUM);          graphics.setFont(ft);                    width = 3*canvas.getWidth()/5+2*padding;          height = ft.getHeight()+2*padding;           graphics.setColor(Color.frame);          graphics.fillRect(x+1,y+1,width+margin,height+margin);                    graphics.setColor(Color.frameBg);          graphics.drawRect(x, y,width, height);          graphics.setColor(Color.background);          graphics.fillRect(x+1, y+1,width-1,height-1);                    graphics.setColor(Color.text);          graphics.drawString(text, x+padding, y+padding, Graphics.TOP|Graphics.LEFT);                    drawCursor(graphics, x+ft.stringWidth(text)+padding, y+padding, 1, ft.getHeight(), cursorBlinkOn);                    canvas.flushGraphics(x,y,width,height);      }        //绘制光标      public void drawCursor(Graphics graphics, int x, int y, int width, int height, boolean cursorBlinkOn)      {          if(cursorBlinkOn)          {              ft = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_MEDIUM);              graphics.setFont(ft);              graphics.setColor(0x0,0x0,0x0);              graphics.drawLine(x+width,y,x+width,y+height);          }      }  }

PopUpTextBox.java

package com.token.view;   import javax.microedition.lcdui.Command;  import javax.microedition.lcdui.CommandListener;  import javax.microedition.lcdui.Displayable;  import javax.microedition.lcdui.TextBox;   import com.token.util.UIController;   public class PopUpTextBox extends TextBox {         private UIController controller;        protected String canvasText = "";        private Command okCommand;        private Command cancelCommand;        private String object_name = null;        private String editor = null;        private Object args_t[];        private Object[] args;                      public PopUpTextBox(UIController control, String title, String text, int maxsize, int constraints)         {            super(title, text, maxsize, constraints);            controller = control;                        args = new Object[6];                        okCommand = new Command("确定", Command.OK, 1);            cancelCommand = new Command("取消", Command.CANCEL, 1);                        this.addCommand(okCommand);            this.addCommand(cancelCommand);            this.setCommandListener(new TextBoxListener());        }                public void init(Object[] args)        {            object_name = ((String)args[0]!=null)?(String)args[0]:"";            editor = ((String)args[1]!=null)?(String)args[1]:"";            //System.out.println(object_name);            //System.out.println(editor);            args_t = args;            this.setString("");        }                    protected void closeTextBox(boolean update) {              if (update) canvasText = this.getString();              //System.out.println(canvasText);               if(object_name.equals("registScreen"))              {                  if(editor.equals("regist_name"))                  {                      if(args_t[3]!=""||args_t[3]!=null||args_t[4]!=""||args_t[4]!=null)                      {                          args[0] = object_name;                          args[1] = editor;                          args[2] = this.canvasText;                          args[3] = args_t[3];                          args[4] = args_t[4];                      }                      controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT_BACK,args);                  }                  else if(editor.equals("regist_passwd"))                  {                      if(args_t[2]!=""||args_t[2]!=null||args_t[4]!=""||args_t[4]!=null)                      {                          args[0] = object_name;                          args[1] = editor;                          args[2] = args_t[2];                          args[3] = this.canvasText;                          args[4] = args_t[4];                      }                      controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT_BACK,args);                  }                  else if(editor.equals("regist_passwd_re"))                  {                      if(args_t[2]!=""||args_t[2]!=null||args_t[3]!=""||args_t[3]!=null)                      {                          args[0] = object_name;                          args[1] = editor;                          args[2] = args_t[2];                          args[3] = args_t[3];                          args[4] = this.canvasText;                      }                      controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT_BACK,args);                  }              }                           //...      }               private class TextBoxListener implements CommandListener       {           public void commandAction(Command command, Displayable disp)          {              if(command==okCommand)              {                  closeTextBox(true);              }              else if(command==cancelCommand)              {                  closeTextBox(false);              }          }      }  }

UserRegist.java

package com.token.view;   import javax.microedition.lcdui.Font;  import javax.microedition.lcdui.Graphics;  import javax.microedition.lcdui.game.GameCanvas;  import com.token.model.*;  import com.token.util.*;  import com.token.view.components.*;   public class UserRegist extends GameCanvas implements Runnable {       private UIController controller;      private Graphics graphics;            private Font ft;            private Menu menu;      private Head head;      private BackGroud backGroud;            private UserDataRecord userRecord;       private String title;            private TextEdit textEdit_name;      private TextEdit textEdit_passwd;      private TextEdit textEdit_passwd_re;      private int textEdit_name_x;      private int textEdit_name_y;      private int textEdit_passwd_x;      private int textEdit_passwd_y;      private int textEdit_passwd_re_x;      private int textEdit_passwd_re_y;      private int currentlySelectedIndex = 0;            private String username;      private String passwd;      private String passwd_re;            long caretBlinkDelay = 500L;      long lastCaretBlink = 0;      private String object_name;      private String editor;      private boolean cursorBlinkOn1;      private boolean cursorBlinkOn2;      private boolean cursorBlinkOn3;            private int width;      private int height;            public UserRegist(UIController control)       {          super(false);          this.controller=control;          this.title = "用户注册";          setFullScreenMode(true);          graphics = getGraphics();                    width = getWidth();          height = getHeight();                    menu = new Menu(this);          head = new Head(this);          backGroud = new BackGroud(this);                    userRecord = new UserDataRecord();                    textEdit_name = new TextEdit(this);          textEdit_passwd = new TextEdit(this);          textEdit_passwd_re = new TextEdit(this);      }       public void show(Object[] args) {          // TODO Auto-generated method stub          setFullScreenMode(true);                    object_name = ((String)args[0]!=null)?(String)args[0]:"";          editor = ((String)args[1]!=null)?(String)args[1]:"";          username = ((String)args[2]!=null)?(String)args[2]:"";          passwd = ((String)args[3]!=null)?(String)args[3]:"";          passwd_re = ((String)args[4]!=null)?(String)args[4]:"";                    if(editor.equals("regist_name"))          {              cursorBlinkOn1 = true;              cursorBlinkOn2 = false;              cursorBlinkOn3 = false;              currentlySelectedIndex =0;          }          else if(editor.equals("regist_passwd"))          {              cursorBlinkOn1 = false;              cursorBlinkOn2 = true;              cursorBlinkOn3 = false;              currentlySelectedIndex =1;          }          else if(editor.equals("regist_passwd_re"))          {              cursorBlinkOn1 = false;              cursorBlinkOn2 = false;              cursorBlinkOn3 = true;              currentlySelectedIndex =2;          }                    //System.out.println(object_name);          //System.out.println(editor);          draw();          redraw();      }       public void draw()      {          //clearScreen();          backGroud.drawBackGroud(this, graphics);          head.drawHead(this,graphics,this.title);          menu.drawMenu(this,graphics,"下一步","退出");          drawBody();      }       private void redraw()      {          switch(currentlySelectedIndex)          {              case 0:              {                  cursorBlinkOn2 = false;                  cursorBlinkOn3 = false;                  editor = "regist_name";                  break;              }              case 1:              {                  cursorBlinkOn1 = false;                  cursorBlinkOn3 = false;                  editor = "regist_passwd";                  break;              }              case 2:              {                  cursorBlinkOn1 = false;                  cursorBlinkOn2 = false;                  editor = "regist_passwd_re";                  break;              }              default:;          }                    textEdit_name.drawTextBox(this, graphics, username, textEdit_name_x, textEdit_name_y, cursorBlinkOn1);          textEdit_passwd.drawTextBox(this, graphics, passwd, textEdit_passwd_x, textEdit_passwd_y, cursorBlinkOn2);          textEdit_passwd.drawTextBox(this, graphics, passwd_re, textEdit_passwd_re_x, textEdit_passwd_re_y, cursorBlinkOn3);          textEdit_name.flushGraphics();      }       public void drawBody()      {          int margin =5;          ft = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE);                    String info = "用户名:\n";          String info_wrap1[] = StringDealMethod.format(info, width-10, ft);                    graphics.setFont(ft);          graphics.setColor(Color.text);          for(int i=0; i<info_wrap1.length; i++)          {              graphics.drawString(info_wrap1[i],5, (i) * ft.getHeight()+40, Graphics.TOP|Graphics.LEFT);          }                    textEdit_name_x = 5;          textEdit_name_y = info_wrap1.length * ft.getHeight()+40;          textEdit_name.drawTextBox(this, graphics, username, textEdit_name_x, textEdit_name_y, cursorBlinkOn1);                    info = "用户密码:\n";          String info_wrap2[] = StringDealMethod.format(info, width-10, ft);                graphics.setFont(ft);          graphics.setColor(Color.text);          for(int i=0; i<info_wrap2.length; i++)          {              graphics.drawString(info_wrap2[i],5, (i+info_wrap1.length) * ft.getHeight()+textEdit_name.height+margin+40, Graphics.TOP|Graphics.LEFT);          }                    textEdit_passwd_x = 5;          textEdit_passwd_y = (info_wrap1.length+info_wrap2.length) * ft.getHeight()+textEdit_name.height+margin+40;          textEdit_passwd.drawTextBox(this, graphics, passwd, textEdit_passwd_x, textEdit_passwd_y, cursorBlinkOn2);                info = "密码确认:\n";          String info_wrap3[] = StringDealMethod.format(info, width-10, ft);                graphics.setFont(ft);          graphics.setColor(Color.text);          for(int i=0; i<info_wrap3.length; i++)          {              graphics.drawString(info_wrap3[i],5, (i+info_wrap1.length+info_wrap2.length) * ft.getHeight()+textEdit_name.height+textEdit_passwd.height+2*margin+40, Graphics.TOP|Graphics.LEFT);          }                    textEdit_passwd_re_x = 5;          textEdit_passwd_re_y = (info_wrap1.length+info_wrap2.length+info_wrap3.length) * ft.getHeight()+textEdit_name.height+textEdit_passwd.height+2*margin+40;          textEdit_passwd_re.drawTextBox(this, graphics, passwd_re, textEdit_passwd_re_x, textEdit_passwd_re_y, cursorBlinkOn3);                      }       public void clearScreen()      {          graphics.setColor(0xff,0xff,0xff);          graphics.fillRect(0, 0, width, height);      }       public void checkTimeStamp()      {          long currentTime = System.currentTimeMillis();          //System.out.println("1");          if(lastCaretBlink + caretBlinkDelay < currentTime)          {              //System.out.println("2");              if(editor.equals("regist_name"))              {                  cursorBlinkOn1 =! cursorBlinkOn1;                  cursorBlinkOn2 = false;                  cursorBlinkOn3 = false;              }              else if(editor.equals("regist_passwd"))              {                  cursorBlinkOn1 = false;                  cursorBlinkOn2 =! cursorBlinkOn2;                  cursorBlinkOn3 = false;              }              else if(editor.equals("regist_passwd_re"))              {                  cursorBlinkOn1 = false;                  cursorBlinkOn2 = false;                  cursorBlinkOn3 =! cursorBlinkOn3;              }              lastCaretBlink = currentTime;          }      }       public void run()      {          //System.out.println("run");          while(true)          {              checkTimeStamp();                            redraw();              try               {                  synchronized(this)                  {                      //System.out.println("3");                      wait(50L);                  }                         }              catch(Exception e)              {                  e.printStackTrace();              }                        }      }       protected void keyPressed(int keyCode)      {          switch(keyCode)          {              case KeyID.SOFT_RIGHT:              {                  controller.handleEvent(UIController.EventID.EVENT_EXIT,null);                  break;              }              case KeyID.SOFT_LEFT:              {                  if(username!="" && passwd!=""&&passwd_re!="")                  {                      if(passwd.equals(passwd_re))                      {                                                                              userRecord.db_deleteAllRecord();                          if(userRecord.db_getRecord(1)==null)                          {                              UserDataItem userItem = new UserDataItem(1,(username+","+passwd).getBytes());                              userRecord.db_addRecord(userItem);                              userItem = null;                              System.gc();                          }                                                    String update = "start";                          Object [] args = {"activeScreen", null, update};                          controller.handleEvent(UIController.EventID.EVENT_NEXT_ACTIVE_TOKEN_SCREEN,args);                      }                  }                  break;              }              case KeyID.KEY_EDIT:              case KEY_NUM0:              case KEY_NUM1:              case KEY_NUM2:              case KEY_NUM3:              case KEY_NUM4:              case KEY_NUM5:              case KEY_NUM6:              case KEY_NUM7:              case KEY_NUM8:              case KEY_NUM9:              {                  //System.out.println(editor);                  Object[] args = {object_name,editor,username,passwd,passwd_re};                  controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT,args);                  break;              }              default:;          }                        keyCode = getGameAction(keyCode);          switch(keyCode)          {              case UP:              case LEFT:              {                  currentlySelectedIndex--;                  if(currentlySelectedIndex<0)                  {                      currentlySelectedIndex=0;                  }                  else                 {                      redraw();                  }                  break;              }              case DOWN:              case RIGHT:              {                  currentlySelectedIndex++;                  if(currentlySelectedIndex>2)                  {                      currentlySelectedIndex=2;                  }                  else                 {                      redraw();                  }                                    break;              }          }      }   }

【分析】

1 文本框的绘制(TextEdit.java)

需要传递GameCanvas、Graphics对象,实现绘图,策略是谁使用,谁传递该参数。此外需要床底文本框左上角坐标(x,y)以及控制光标闪烁的变量cursorBlinkOn。

public void drawTextBox(GameCanvas canvas, Graphics graphics, String text, int x, int y, boolean cursorBlinkOn)  {      //System.out.println("draw");      int padding = 4;      int margin = 2;            ft = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_MEDIUM);      graphics.setFont(ft);            width = 3*canvas.getWidth()/5+2*padding;      height = ft.getHeight()+2*padding;       graphics.setColor(Color.frame);      graphics.fillRect(x+1,y+1,width+margin,height+margin);                graphics.setColor(Color.frameBg);      graphics.drawRect(x, y,width, height);      graphics.setColor(Color.background);      graphics.fillRect(x+1, y+1,width-1,height-1);                graphics.setColor(Color.text);      graphics.drawString(text, x+padding, y+padding, Graphics.TOP|Graphics.LEFT);                drawCursor(graphics, x+ft.stringWidth(text)+padding, y+padding, 1, ft.getHeight(), cursorBlinkOn);                canvas.flushGraphics(x,y,width,height);  }

2 绘制光标(TextEdit.java)

public void drawCursor(Graphics graphics, int x, int y, int width, int height, boolean cursorBlinkOn)  {      if(cursorBlinkOn)      {          ft = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_MEDIUM);          graphics.setFont(ft);          graphics.setColor(0x0,0x0,0x0);          graphics.drawLine(x+width,y,x+width,y+height);      }  }

3 实现光标闪烁

光标闪烁的实现需要用到线程,在UIController.java类中,需要绘制文本框的视图类,需要实现线程接口。

UIController.java

case EventID.EVENT_NEXT_USER_REGIST_SCREEN:  case EventID.EVENT_USER_REGIST_EDIT_BACK:  {              reg.show(args);              Thread thread = new Thread(reg);              thread.start();              midlet.setCurrent(reg);              break;  }

UserRegist.java

public void checkTimeStamp()  {      long currentTime = System.currentTimeMillis();      //System.out.println("1");      if(lastCaretBlink + caretBlinkDelay < currentTime)      {          //System.out.println("2");          if(editor.equals("regist_name"))          {              cursorBlinkOn1 =! cursorBlinkOn1;              cursorBlinkOn2 = false;              cursorBlinkOn3 = false;          }          else if(editor.equals("regist_passwd"))          {              cursorBlinkOn1 = false;              cursorBlinkOn2 =! cursorBlinkOn2;              cursorBlinkOn3 = false;          }          else if(editor.equals("regist_passwd_re"))          {              cursorBlinkOn1 = false;              cursorBlinkOn2 = false;              cursorBlinkOn3 =! cursorBlinkOn3;          }          lastCaretBlink = currentTime;      }  }   public void run()  {      //System.out.println("run");      while(true)      {          checkTimeStamp();                    redraw();          try           {              synchronized(this)              {                  //System.out.println("3");                  wait(50L);              }                     }          catch(Exception e)          {              e.printStackTrace();          }                    }  }

4 调用高级界面TextBox子类PopUpTextBox

调用时,将调用对象名、编辑对象名、以及编辑框参数传递给PopUpTextBox对象(一定要有,目的是保存编辑框的值,否则多次调用返回时,不同编辑框的值被刷新为空了)

UserRegist.java(KeyPressed)

case KeyID.KEY_EDIT:  case KEY_NUM0:  case KEY_NUM1:  case KEY_NUM2:  case KEY_NUM3:  case KEY_NUM4:  case KEY_NUM5:  case KEY_NUM6:  case KEY_NUM7:  case KEY_NUM8:  case KEY_NUM9:  {      //System.out.println(editor);      Object[] args = {object_name,editor,username,passwd,passwd_re};      controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT,args);      break;  }

UIController.java

case EventID.EVENT_USER_REGIST_EDIT:  {       textBox.init(args);           midlet.setCurrent(textBox);       break;  }

5 PopUpTextBox参数的接收

public void init(Object[] args)  {       object_name = ((String)args[0]!=null)?(String)args[0]:"";       editor = ((String)args[1]!=null)?(String)args[1]:"";       //System.out.println(object_name);       //System.out.println(editor);       args_t = args;       this.setString("");  }

6 PopUpTextBox返回输入法输入的值

if (update) canvasText = this.getString();

7 PopUpTextBox输入值处理

依据调用的对象,以及编辑对象,对输入的值进行处理,传递给父对象编辑框

if(object_name.equals("registScreen"))  {          if(editor.equals("regist_name"))          {                  if(args_t[3]!=""||args_t[3]!=null||args_t[4]!=""||args_t[4]!=null)                  {                      args[0] = object_name;                      args[1] = editor;                      args[2] = this.canvasText;                      args[3] = args_t[3];                      args[4] = args_t[4];                  }                  controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT_BACK,args);      }      else if(editor.equals("regist_passwd"))      {                  if(args_t[2]!=""||args_t[2]!=null||args_t[4]!=""||args_t[4]!=null)                  {                      args[0] = object_name;                      args[1] = editor;                      args[2] = args_t[2];                      args[3] = this.canvasText;                      args[4] = args_t[4];                  }                  controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT_BACK,args);      }      else if(editor.equals("regist_passwd_re"))      {                  if(args_t[2]!=""||args_t[2]!=null||args_t[3]!=""||args_t[3]!=null)                  {                      args[0] = object_name;                      args[1] = editor;                      args[2] = args_t[2];                      args[3] = args_t[3];                      args[4] = this.canvasText;                  }                  controller.handleEvent(UIController.EventID.EVENT_USER_REGIST_EDIT_BACK,args);      }  }

8 输入值的显示

(1) 新建对象

private TextEdit textEdit_name;  textEdit_name = new TextEdit(this);

(2) 接受输入的参数

object_name = ((String)args[0]!=null)?(String)args[0]:"";  editor = ((String)args[1]!=null)?(String)args[1]:"";  username = ((String)args[2]!=null)?(String)args[2]:"";  passwd = ((String)args[3]!=null)?(String)args[3]:"";  passwd_re = ((String)args[4]!=null)?(String)args[4]:"";

(3) 光标控制,定位到编辑对象,控制编辑对象的光标闪烁(run方法)

private void redraw()  {      switch(currentlySelectedIndex)      {          case 0:          {              cursorBlinkOn2 = false;              cursorBlinkOn3 = false;              editor = "regist_name";              break;          }          case 1:          {              cursorBlinkOn1 = false;              cursorBlinkOn3 = false;              editor = "regist_passwd";              break;          }          case 2:          {              cursorBlinkOn1 = false;              cursorBlinkOn2 = false;              editor = "regist_passwd_re";              break;          }          default:;      }  //...   }

(4) 编辑框的绘制

private void redraw()  {      ...           textEdit_name.drawTextBox(this, graphics, username, textEdit_name_x, textEdit_name_y, cursorBlinkOn1);      textEdit_passwd.drawTextBox(this, graphics, passwd, textEdit_passwd_x, textEdit_passwd_y, cursorBlinkOn2);      textEdit_passwd.drawTextBox(this, graphics, passwd_re, textEdit_passwd_re_x, textEdit_passwd_re_y, cursorBlinkOn3);      textEdit_name.flushGraphics();  }

上述就是小编为大家分享的JavaMe中怎么使用TextEdit绘制文本框了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaMe中怎么使用TextEdit绘制文本框

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaMe中怎么使用TextEdit绘制文本框

这期内容当中小编将会给大家带来有关JavaMe中怎么使用TextEdit绘制文本框,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 运用Graphics、GameCanvas绘制文本框和光标。2 检测到输
2023-06-17

JavaMe开发中怎么绘制可自动换行文本

这期内容当中小编将会给大家带来有关JavaMe开发中怎么绘制可自动换行文本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。【问题描述】JavaMe Graphics类中的drawString不支持文本换行,
2023-06-17

怎么在html5中使用canvas绘制文本自动换行

怎么在html5中使用canvas绘制文本自动换行?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一个150*100的canvas画布,加个边框明显边界2023-06-09

GoJs的文本绘图模板TextBlock怎么使用

本篇内容主要讲解“GoJs的文本绘图模板TextBlock怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GoJs的文本绘图模板TextBlock怎么使用”吧!TextBlock的使用首先
2023-07-06

怎么用Python绘制论文中的曲线图

本篇内容主要讲解“怎么用Python绘制论文中的曲线图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python绘制论文中的曲线图”吧!1.折线图 plt.plot()常用的一些参数:颜色
2023-07-05

Python中怎么使用pyecharts绘制散点图

这篇文章主要介绍“Python中怎么使用pyecharts绘制散点图”,在日常操作中,相信很多人在Python中怎么使用pyecharts绘制散点图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中
2023-07-02

怎么在python中使用opencv绘制图形

这篇文章给大家介绍怎么在python中使用opencv绘制图形,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现方法1)画线段 cv.line在图片中绘制一段直线# 绘制线段# 参数1:图片# 参数2:起点# 参数3:
2023-06-14

Python中怎么使用Matplotlib库绘制图形

这篇文章主要介绍“Python中怎么使用Matplotlib库绘制图形”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中怎么使用Matplotlib库绘制图形”文章能帮助大家解决问题。一、
2023-07-02

Python中怎么使用pyecharts绘制词云图

这篇文章主要讲解了“Python中怎么使用pyecharts绘制词云图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么使用pyecharts绘制词云图”吧!词云图什么是词云图
2023-07-02

Python文本终端GUI框架怎么使用

本篇内容主要讲解“Python文本终端GUI框架怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python文本终端GUI框架怎么使用”吧!Curses首先出场的是 Curses[1]。C
2023-07-06

怎么使用Vue+Echarts实现基本K线图的绘制

本篇内容介绍了“怎么使用Vue+Echarts实现基本K线图的绘制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 引入Echarts1.1
2023-07-05

使用Python怎么在画布中绘制图表

本篇文章给大家分享的是有关使用Python怎么在画布中绘制图表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2
2023-06-14

Python中怎么使用pyecharts绘制地理图表

本篇内容介绍了“Python中怎么使用pyecharts绘制地理图表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!地图模板系列中国地图展示中
2023-07-02

PyQt5中使用QtDesigner怎么实现文本框读写操作

PyQt5中使用QtDesigner怎么实现文本框读写操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。主要内容:1、读、写 输入控件(Input Widget
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录