返回顶部
首页 > 资讯 > 精选 >JavaMe中怎么实现自适应滚动显示
  • 409
分享到

JavaMe中怎么实现自适应滚动显示

2023-06-17 10:06:40 409人浏览 八月长安
摘要

JavaMe中怎么实现自适应滚动显示,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。【原理】JavaMe中有一个坐标变换的功能。当触发相应的按键事件时,我们就让其显示相应的页,并

JavaMe中怎么实现自适应滚动显示,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

【原理】

JavaMe中有一个坐标变换的功能。当触发相应的按键事件时,我们就让其显示相应的页,并且使滚动条滚动到相应的位置。

【代码清单】

ShowHelp.java

package com.token.view;   import javax.microedition.lcdui.Font;  import javax.microedition.lcdui.Graphics;  import javax.microedition.lcdui.game.Gamecanvas;   import com.token.util.StringDealMethod;  import com.token.util.UIController;  import com.token.view.components.*;   public class ShowHelp  extends GameCanvas  {      private UIController controller;      private Graphics graphics;      private Font ft;      private int width;      private int height;            private Menu menu;      private Head head;      private BackGroud backGroud;            private int page = 0;      private int currentPageIndex = 0;      private int bodyHeight;      private int dir = 0;             public ShowHelp(UIController control)       {          super(false);          this.controller=control;          setFullScreenMode(true);                    width = getWidth();          height = getHeight();                    menu = new Menu(this);          head = new Head(this);          backGroud = new BackGroud(this);       }            public void show()      {          int margin = 0;          graphics = getGraphics();                    graphics.clipRect(0,0, width, height);          backGroud.drawBackGroud(this, graphics);            head.drawHead(this, graphics, "帮助");          menu.drawMenu(this, graphics, "","返回");          //flushGraphics();                    ft = Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_MEDIUM);                    String info = "1 滚动分页显示;\n"                 +"2 滚动分页显示;\n"                 +"3 滚动分页显示;\n"                 +"4 滚动分页显示;\n"                 +"5 滚动分页显示;\n"                 +"6 滚动分页显示;\n"                 +"7 滚动分页显示;\n"                 +"8 滚动分页显示;\n"                 +"9 滚动分页显示;\n"                 +"10 滚动分页显示;\n"                 +"11 滚动分页显示;\n"                 +"12 滚动分页显示;\n"                 +"13 滚动分页显示;\n"                 +"14 滚动分页显示;\n"                 +"15 滚动分页显示;\n"                 +"16 滚动分页显示;\n"                 +"17 滚动分页显示;\n"                 +"18 滚动分页显示;\n"                 +"19 滚动分页显示;\n"                 +"20 滚动分页显示;\n"                 +"21 滚动分页显示;\n"                 +"22 滚动分页显示;\n"                 +"23 滚动分页显示;\n"                 +"24 滚动分页显示;\n"                 +"25 滚动分页显示;\n"                 +"26 滚动分页显示;\n"                 +"27 滚动分页显示;\n"                 +"28 滚动分页显示;\n"                 +"29 滚动分页显示;\n"                 +"30 滚动分页显示;\n"                 +"31 滚动分页显示;\n"                 +"32 滚动分页显示;\n"                 +"33 滚动分页显示;\n"                 +"34 滚动分页显示;\n";                            String info_wrap1[] = StringDealMethod.fORMat(info, width-15, ft);           page = info_wrap1.length*ft.getHeight()/(height-head.menuHeight-menu.menuHeight-2*margin)+1;          bodyHeight = ((int) (height-head.menuHeight-menu.menuHeight)/ft.getHeight())*ft.getHeight();          margin = (height-head.menuHeight-menu.menuHeight-bodyHeight)/2;                    graphics.setFont(ft);          graphics.setColor(Color.text);          graphics.clipRect(0, head.menuHeight+margin, width, bodyHeight);          graphics.translate(0, dir*currentPageIndex*bodyHeight);                    for(int i=0; i<info_wrap1.length;i++)          {              graphics.drawString(info_wrap1[i],5, i * ft.getHeight()+head.menuHeight+margin, Graphics.TOP|Graphics.LEFT);          }                    graphics.translate(0, -dir*currentPageIndex*bodyHeight);                    drawScrollBar();          flushGraphics();                    //System.out.println(graphics.getTranslateY());                }            private void drawScrollBar()      {          int barHeight = height-head.menuHeight-menu.menuHeight;                    graphics.setColor(Color.menuFrame);          graphics.fillRect(width-3, head.menuHeight, 2, barHeight);          graphics.setColor(Color.selectBg);          graphics.fillRect(width-4, head.menuHeight+(currentPageIndex)*barHeight/page, 4, barHeight/page);      }            protected void keyPressed(int keyCode)      {          //System.out.println(keycode);          switch(keyCode)          {              case KeyID.SOFT_RIGHT:              {                  String flag = "0";                  Object [] args = {flag,""};                  controller.handleEvent(UIController.EventID.EVENT_MaiN_SCREEN,args);                  break;              }              default:                      ;          }                    keyCode = getGameAction(keyCode);          //System.out.println(page);                    switch(keyCode)          {                            case UP:              {                  dir = -1;                                                      if(currentPageIndex>0)                  {                      currentPageIndex--;                  }                  else                   {                      //dir = 0;                  }                                    show();                  break;                                }              case DOWN:              {                  dir = -1;                  if(currentPageIndex<page-1)                  {                      currentPageIndex++;                  }                  else                   {                         //dir = 0;                  }                                    show();                  break;              }          }      }   }

*UIController请参考JavaMe连载(3)-也说mvc设计模式,此处不再赘述。

【分析】

1 字符串拆分

String info_wrap1[] = StringDealMethod.format(info, width-15, ft);

具体请参考JavaMe连载(4)-绘制可自动换行文本

2 避免字截断

如何在指定的区域内绘制整行文本,而不会因为字体或屏幕高度的改变使文本出现截断的问题,使文本出现“半截字”的问题呢?

bodyHeight = ((int) (height-head.menuHeight-menu.menuHeight)/ft.getHeight())*ft.getHeight();

经过上述处理后,滚动区域的高度bodyHeight总会是字体高度的整数倍,这样就不会出现上述字截断的问题了。

3 绘制文本

for(int i=0; i<info_wrap1.length;i++)  {      graphics.drawString(info_wrap1[i],5, i * ft.getHeight()+head.menuHeight+margin, Graphics.TOP|Graphics.LEFT);  }

4 坐标变换

graphics.clipRect(0, head.menuHeight+margin, width, bodyHeight);  graphics.translate(0, dir*currentPageIndex*bodyHeight);

文本绘制完成后,将坐标变换回来。

graphics.translate(0, -dir*currentPageIndex*bodyHeight);

5 绘制滚动条

private void drawScrollBar()  {      int barHeight = height-head.menuHeight-menu.menuHeight;            graphics.setColor(Color.menuFrame);      graphics.fillRect(width-3, head.menuHeight, 2, barHeight);      graphics.setColor(Color.selectBg);      graphics.fillRect(width-4, head.menuHeight+(currentPageIndex)*barHeight/page, 4, barHeight/page);  }

6 事件处理

当检测到按键事件后,进行翻页操作。

protected void keyPressed(int keyCode)  {      //System.out.println(keycode);      switch(keyCode)      {          case KeyID.SOFT_RIGHT:          {              String flag = "0";              Object [] args = {flag,""};              controller.handleEvent(UIController.EventID.EVENT_MAIN_SCREEN,args);              break;          }          default:              ;      }                keyCode = getGameAction(keyCode);      //System.out.println(page);                switch(keyCode)      {                    case UP:          {              dir = -1;                                                      if(currentPageIndex>0)              {                  currentPageIndex--;              }              else               {                  //dir = 0;              }                            show();              break;                        }          case DOWN:          {              dir = -1;              if(currentPageIndex<page-1)              {                  currentPageIndex++;              }              else               {                     //dir = 0;              }                                show();              break;          }      }  }

看完上述内容,你们掌握JavaMe中怎么实现自适应滚动显示的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: JavaMe中怎么实现自适应滚动显示

本文链接: https://lsjlt.com/news/288352.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaMe中怎么实现自适应滚动显示
    JavaMe中怎么实现自适应滚动显示,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。【原理】JavaMe中有一个坐标变换的功能。当触发相应的按键事件时,我们就让其显示相应的页,并...
    99+
    2023-06-17
  • css textarea高度自适应无滚动条怎么设置
    要实现textarea高度自适应且无滚动条,可以通过以下CSS样式设置:```csstextarea {resize: none; ...
    99+
    2023-09-20
    css
  • css怎么实现自适应
    这篇文章主要讲解了“css怎么实现自适应”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css怎么实现自适应”吧! 在css中,可...
    99+
    2024-04-02
  • FineReport中怎么实现自动滚屏效果
    本篇文章为大家展示了FineReport中怎么实现自动滚屏效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。添加加载结束事件点击菜单模板>模板web属性>分页预览设置,选择“为该模板单独...
    99+
    2023-06-04
  • JavaScript中怎么实现页面自适应
    JavaScript中怎么实现页面自适应,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 实现原理:获取IE显示屏幕的宽高.确定哪些对...
    99+
    2024-04-02
  • PyQt5实现多张图片显示并滚动
    最近要做个网页图片批量下载工具,然后需要一个页面显示网页上的所有图片供用户勾选,再根据勾选的内容来下载指定图片,其中就涉及到要到同时显示多张图片。 单页面显示多张图片 习惯性的用Gr...
    99+
    2024-04-02
  • css怎么超出显示滚动条
    这篇文章将为大家详细讲解有关css怎么超出显示滚动条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css超出显示滚动条的方法:1、使用三个容器包围起来,不需要计算滚动条的宽度;2、自定义滚动条的伪对象选择...
    99+
    2023-06-14
  • Jquery实现图片左右自动滚动示例
    复制代码 代码如下: <!DOCTYPE HTML> <html> <head> <title>基于jQuery的控制左右滚动效果_自...
    99+
    2022-11-15
    图片左右滚动 自动滚动
  • vue中怎么利用echarts3.0实现自适应
    vue中怎么利用echarts3.0实现自适应,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一种:浏览器自适应通过:在myChart.set...
    99+
    2024-04-02
  • css怎么实现中间自适应布局
    本篇文章为大家展示了css怎么实现中间自适应布局,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。问题:如何实现三栏布局(高度固定,左中右的结构)假设高度已知,请写出三栏布局,其中左右宽度均为300px...
    99+
    2023-06-08
  • html滚动条不显示怎么解决
    在网页开发中,常常会使用滚动条来帮助用户浏览页面内容,但有时候会遇到滚动条不显示的情况,这可能会影响用户体验,下面我们来看一下这个问题产生的原因和解决方法。一、为什么滚动条不显示内容不够多当页面内容不够多时,滚动条可能不会显示,因为没有内容...
    99+
    2023-05-14
  • JavaMe开发中怎么绘制可自动换行文本
    这期内容当中小编将会给大家带来有关JavaMe开发中怎么绘制可自动换行文本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。【问题描述】JavaMe Graphics类中的drawString不支持文本换行,...
    99+
    2023-06-17
  • vue页面切换到滚动页面显示顶部怎么实现
    本篇内容介绍了“vue页面切换到滚动页面显示顶部怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、目标:‘listview'...
    99+
    2023-07-04
  • css高度自适应怎么实现
    这篇文章跟大家分析一下“css高度自适应怎么实现”。内容详细易懂,对“css高度自适应怎么实现”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。...
    99+
    2024-04-02
  • css宽度自适应怎么实现
    这篇文章将为大家详细讲解有关css宽度自适应怎么实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   我们经常会看到这样的页面,左侧(或者右侧)为固定的导航或者菜单栏...
    99+
    2024-04-02
  • css怎么实现高度自适应
    本篇内容主要讲解“css怎么实现高度自适应”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css怎么实现高度自适应”吧!在写css静态页面的时候让Html的高度自适应屏幕高度是一个常见的需求,比如...
    99+
    2023-06-20
  • echarts自适应大小怎么实现
    ECharts是一个可视化图表库,可以通过以下方法来实现自适应大小:1. 使用百分比单位:在设置ECharts容器的宽度和高度时,可...
    99+
    2023-09-29
    echarts
  • echarts怎么实现自适应宽度
    要实现Echarts图表的自适应宽度,你可以使用以下方法: 使用CSS样式控制容器的宽度:将Echarts绘图容器的宽度设置为一个...
    99+
    2023-10-21
    echarts
  • css怎么实现图片自适应
    本文小编为大家详细介绍“css怎么实现图片自适应”,内容详细,步骤清晰,细节处理妥当,希望这篇“css怎么实现图片自适应”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,在页面中添加一张图片;<!DOCT...
    99+
    2023-07-04
  • 使用@media怎么实现移动端自适应样式
    本篇文章给大家分享的是有关使用@media怎么实现移动端自适应样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通用手机端样式:@media all and (orientat...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作