JavaME UI设计之滚动条

UI设计规范 近一段时间一直在做UI设计这块的东西,让我又重新对UI和用户的体验有了新的认识,现在结合查询的资料和自己感受总结一下! 1:易用性:          按钮名称应该易懂,用词准确,摒弃模棱两可的字眼,要与同一界面上的其他按钮易于区分,能望文知义最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。 易用性细则: 1):完成相同或相近功能的按钮用Frame框括起来,常 阅读详情
 
上一篇文章中我们介绍了在低级界面中实现文本控件,文本控件主要用于显示大段文字,具有自动换行,翻页等功能。通常还可以通过另一种方式也可以实现大量文本的处理,就是给文本添加一个滚动条,本文同样选择在低级界面中来实现,同时也方便移植到其他的移动平台,比如:android、windows mobile等。
首先看文本需要实现的效果如图3-1所示。

 
从图中可以看出,同样需要将要显示的文本拆分为适合显示区域的文本行,右边会根据文本行的多少来计算滚动条的长短和滚动条显示的位置,这里只是用于测试,滚动条将用一个矩形来显示,大家也可以使用适合应用程序风格的UI图片来实现。下面我们分析具体实现。
首先在程序中加入如下成员变量:
private int sreenWidth;   //屏幕宽度
private int sreenHeight; //屏幕高度
private int scrollHeight; //滚动条的高度
private int scrollY;        //滚动条的坐标y
private int regionY;             
private int numHeight;   //行数
其实这里的屏幕宽度和高度也将作为文本显示区域和滚动条的区域,具体绘制代码如下:
//绘制背景,颜色
g.setColor(0xFFFFFF);
g.fillRect(0, 0, this.sreenWidth, this.sreenHeight);
//将要处理的文本转换为字符数组
char[] chars = text.toCharArray();
int h = 0;
int w = 0;
//设置字体和颜色
Font font = g.getFont();
g.setColor(0x00000);
for (int i = 0; i < text.length(); i++) {
       if (w > this.sreenWidth - 18) {
              h += font.getHeight();
              w = 0;
       }
       g.drawChar(chars[i], w, h + this.regionY, Graphics.TOP | Graphics.LEFT);
       w += font.charWidth(chars[i]);
}
if (this.numHeight == 0)
       this.numHeight = h + font.getHeight();
//计算滚动条的位置
this.scrollHeight = this.sreenHeight * this.sreenHeight / numHeight;
this.scrollY = (-this.regionY) * this.sreenHeight / numHeight;
 
g.setColor(255);
g.fillRect(this.sreenWidth - 6, 0, 6, this.sreenHeight);
//绘制滚动条
g.setColor(0xFFFFFF);
g.fillRect(this.sreenWidth - 5, this.scrollY, 4, this.scrollHeight);
上面的代码中所使用的api都非常简单,这里就不一一重复介绍了,对于滚动条位置的计算需要根据文本的行数的多少和高度来计算。这里,没有将要处理的字符串筛分到向量中,而是在拆分的同时进行了绘制!拆分原理是通过将每个字符的宽度(charWidth)累加和屏幕宽度进行对比,如果满足一行时将高度加上字体高度切换到下一行显示。在绘制时使用了drawChar函数来绘制单个字符而不是使用drawString来绘制一行字符串。另外,对于滚动条的位置将在程序中动态改变,需根据具体的按键事件来确定,下面我们在按键处理函数中加入如下代码,测试滚动条的实现效果,如下:
System.out.println(keyCode);
if (keyCode == -2) {
       if (this.sreenHeight - this.regionY > this.numHeight)
              return;
       this.regionY -= 30;
} else if (keyCode == -1) {
       if (this.regionY >= 0)
              return;
       this.regionY += 30;
}
this.repaint();
实现方式为通过按键来改变绘制的位置坐标即可,最终大家同样可以将该代码整理成为一个滚动条控件,以方便在各种应用或游戏中直接使用。
上一篇文章和这一篇都是在低级界面中处理文本显示的方案,由于JavaME的高级界面并不是非常美观,通常在开发中也很少使用,因此大家可以自己通过低级界面来实现一套类似于高级界面的UI控件,当然目前也有一些开源的第三方UI库,后面我们还会陆续给大家介绍。

ext Gird 有滚动条功能 ext Gird 有滚动条功能 附带滚动条 重写原本EXT 立即下载

相关推荐

自制JS某课脚本

根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行

2301_81243054的博客 3459

java中的翻页,java滚动翻页

一.无限滚动概念首先,它是基于jQuery的,另外还要明白无限滚动的概念:无限滚动的实现原理就是当你在网页上的滚动条滚动到离网页底部一定长度的时候,触发某ajax函数(infinite-scroll内已经封装好),往后台加载文件或者数据,又或者从外部引入静态html形式文件。二.探讨infinite-scroll1.从网页头引入两个js文件,注意必须先放jquery的[javascript] vi...

weixin_35702295的博客 886

Edge浏览器IE模式失效?最新142版本隐藏按钮的3种解决方案

本文针对Edge浏览器142版本中IE模式按钮消失的问题,提供了3种实用解决方案,包括注册表修改、手动添加网站到IE模式列表和企业策略部署方案,帮助用户解决兼容性问题,确保老旧系统正常访问。

weixin_28308325的博客 503

Java1-2.1滚动条按钮组菜单列表框下拉框等的具体实现

weixin_45815777的博客 400

Cadence IC5141保姆级教程:Bandgap电路四大仿真(稳定性/噪声/启动/PSRR)完整流程与调参心得

本文提供Cadence IC5141中Bandgap电路的四大仿真(稳定性仿真、噪声仿真、启动仿真、PSRR仿真)的完整流程与调参心得。从原理图检查到ADE L配置,详细解析各仿真步骤的关键参数设置与优化策略,帮助工程师高效完成电路设计与性能调优。

weixin_30399821的博客 1651

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。

解决方案:“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。无法查找或打开 PDB 文件。 添加getchar();代码块解决无法查找或打开PDB文件。 错误提示: “Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Pro...

m0_46523403的博客 6418

java怎么添加滚动条_java中如何添加滚动条

首先定义一个JTextArea textArea= new JTextArea();对象,然后在定义一个JScrollPane ScrollPane =new JScrollPane(jTextArea);注意将应将JTextArea置于JScrollPanel中,设置一些textArea的属性:textArea.setBounds(136, 136, 264, 61);textArea.setW...

weixin_42389522的博客 2844

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1086

Element-ui 滚动条美化

有时候为了使界面滚动条,各个浏览器的滚动条能保持一致,这样我们的项目避免在各个浏览器存在差异导致UI界面的不一致,这时候我们就可以考虑使用通用组件的方式,对各个需要滚动的页面,或者弹出窗口添加统一的组件进行包裹,来保证滚动效果在各个浏览器中能有更好的体验效果。最后我们看到各个浏览器中滚动条的效果,基本上各个浏览器的表现效果是一致的,添加通用组件,默认情况下滚动条是不显示的,只有鼠标移动过去才会进行显示,整体上效果和用户体验会更好。在源码顶部,看到有一个链接地址,是参考另一个插件的实现,如下所示。

专注于大数据方向,区块链,前后端,数据可视化,人工智能等领域 8377

TortoiseGit之配置密钥

基于github的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具,来生成既适用于github的rsa密钥也适用于TortoiseGit的ppk密钥。

欧文的博客 2079

vue3:html2canvas+jspdf将页面以A4导出为PDF文件,解决内容截断+在分页处截断问题详细排查和解决教程(jsPDF + html2canvas A4分页截断、内容分页时存在截断)

html2canvas + jsPDF 解决内容截断问题,vue3 jspdf-html2canvas生成多页pdf防截断处理(包含代码),vue3解决html2canvas + jsPDF导出pdf分页内容截断问题,jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例),html页面导出pdf截断问题,html2canvas 与 jspdf 相结合生成 pdf 内容被截断的终极解决方案,提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页

✅ 精选推荐文章 2245

java滚动显示信息_JavaMe开发自适应滚动显示

【问题描述】我们常看到一些滚动显示的实例,比如UC浏览器中,显示网页的内容。当内容比较多时,采用滚动分页显示是合理的。在Canvas中绘图中,多余的内容被截断了。如何实现滚动分页显示呢?【原理】JavaMe中有一个坐标变换的功能。当触发相应的按键事件时,我们就让其显示相应的页,并且使滚动条滚动到相应的位置。【代码清单】ShowHelp.javapackage com.token.view;impo...

weixin_39891158的博客 242

自定义View系列教程04--Draw源码分析及其实践

通过之前的详细分析,我们知道:在measure中测量了View的大小,在layout阶段确定了View的位置。 完成这两步之后就进入到了我们相对熟悉的draw阶段,在该阶段真正地开始对视图进行绘制。按照之前的惯例,我们来瞅瞅View中draw( )的源码 public void draw(Canvas canvas) { final int privateFlags = mPriv

谷哥的小弟 2万+

JavaME UI设计之图像特效二

上一篇我们分析了处理图片特效的原理,通常是将图像数据转换为一个int[]数组,然后再操作这个int[]数组,最后将操作之后的int[]数组转换为一个Image即可。本文我们接着分析另外几种常用特效的实现原理。负片特效要在图像处理软件中将图片处理为负片特效,非常简单,但是这些图像处理软件也是通过程序来实现的,其实现原理通常是用255来减去图像数据的r,g,b值,得到一个新的r,g,b值,再将新的数值合成图片即可,具体实现代码如下:/* * 图片特效负片 */public Image effect_negati

zhjp4295216的专栏 688

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

J2ME GUI实战之一 ----------LWUIT简介

本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处!首先,想让大家看看LWUIT可以做出什么界面:这种界面,用J2ME-Polish也不难做出来,但是作者我更喜欢LWUIT,因为她发展得很快很快,觉得值得大家关注!!好了,继续介绍,以下内容摘自网络:Sun发布了LWUIT(Light-Weight UI Toolkit)的源代码以及示例代码(示例后面会详细说明...

编程开发资料库 113

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

andy学java系列之J2ME的移动支付系统的设计与实现

andy学java系列J2ME的移动支付系统的设计与实现----三星SDK支付API介绍 移动支付是移动电子商务中的最重要的部分之一。安全性、私密性、易用性是移动支付的最重要的几个问题。目前有许多不同种类的技术能够实现移动支付,其中J2ME凭借其多种显著的优势成为了佼佼者。移动支付系统也有多种体系架构,其中以第三方支付平台为中心的架构比较灵活、具有很强的可扩展性。本文讨论一个基于J2...

编程资料大全 146

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

J2ME中Form类详解

Form类是一个典型的容器控件类,用于包含其它高层用户界面控件,一般不单独显示在屏幕上。Item类是可以包含于Form容器中的控件类。每一个Item实例只能存在于唯一的Form容器中,如果同一个实例放在不同的Form容器中,那么就会产生IllegalStateException异常。Form类在布局方面,是按列进行组织的,每一类都有相同的宽度,没有水平方向的滚动条;在垂直方向上,For

jCuckoo的专栏 6561

datagrid的列非常多的时候,而且没有表格数据,横向滚动条不会显示

datagrid的列非常多的时候,而且没有表格数据,横向滚动条不会显示,字段无法读取

清叶 的专栏 4357

unigui怎么隐藏滚动条

隐藏横向滚动条

宁静志远 550

MINIGUI 设置滚动条宽度

版本: MINIGUI3.2 滚动条宽度是窗口的一个元素 (element: WE_METRICS_SCROLLBAR), 窗口元素的操作API是: MG_EXPORT DWORD GUIAPI GetWindowElementAttr (HWND hwnd, int we_attr_id); MG_EXPORT DWORD GUIAPI SetWindowElementAttr (...

Horsdy123的专栏 1019

如何给div层加滚动条

<div style=" overflow:scroll"> 这里是你要显示的内容 </div> overflow 语法: overflow:visible|auto|hidden|scroll; 参数: 1.visible:不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame...

amkr21253的博客 497

minui点击分页控件后滚动条置顶

需求:当点击miniui的分页控件后(上一页、下一页、第一页、最后一页)后要求若滚动条没有置顶则自动置顶 解决方案之一: 通过百度发现js有自带的方法可以设置滚动条的位置具体如下: window.scrollTop(60); --60为数字不需要打引号 或者 document.getElementById(..).scrollTop = 60; --获取id对象后设置scrollTop 的值 当...

weixin_41230889的博客 1420

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

随着用户界面体验提升的要求,滚动条自定义样式以及滚动条隐藏精致化的需求日渐增加,本文详细介绍了小程序、iOS、Android平台滚动条的隐藏方法,以及滚动条一般自定义样式的方法。在保持界面整洁、避免内容溢出的同时,确保用户能够访问所有信息,提升浏览体验。

JINGWHALE 5083

DataGrid应用(二) —— 滚动条的设计

      为DataGrid加上滚动条,众所周知可以通过嵌套在里来实现。我先总结一下这些方法:1.   利用div的overflow的特性,我们可以设计出表格的滚动条。但是我们通常需要一个固定不动的表头,因为整个datagrid放在div中,无法使表头固定不动。(方法二,可以利用css固定),我们设计需要另一个来作为表头,同时,将由div包含着的datagrid的表明细行对齐表头,形成完整的

Lullaby's Blog 8283
上一篇: JavaME UI设计之九宫格
下一篇: JavaME UI设计之低级界面文本控件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值