JavaME UI设计之九宫格

jquery 实现拼图小游戏 九宫格拼图小游戏是小时候比较常见的小游戏之一。闲着无聊就用js简单写了一个。 游戏的玩法很简单。九宫格中有八个小图片。随机打乱之后,将八张小图片拼接成一个完整的图。 html代码 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <style> body{ borde... 阅读详情
 
现在越来越多的手机应用程序使用九宫格作为菜单了,很多智能手机都开始提供直接可以使用的九宫格api了,比如:android等,在JavaME平台上却需要我们自己来实现这样的效果,前面我们说过JavaME的低级界面比较灵活,我们可以使用低级界面来实现任意效果,当然,本文就将给大家展示通过JavaME的低级界面来实现一个九宫格程序,该程序会自动适应屏幕大小,计算并显示出九宫格效果,对于九宫格的绘制非常简单,关键在于如何实现自动适应屏幕来绘制,这只需要一些稍微复杂(记住,只是稍微复杂,其实并不是需要各种高等数学知识)的数学计算即可。
首先演示一下本文需要实现的九宫格效果在不同尺寸的移动设备上显示效果,如下面几幅图所示。
 
该程序在不同尺寸大小的模拟器上测试效果如上图所示,对于屏幕较大的设备能一屏就显示9个图标,对于较小的屏幕则只能显示4个或者更少!
要实现这种能自动适应屏幕九宫格控件,算法很多,笔者这里将使用一个将每个一个格子的数据(即0-8的索引)放置在一个二维数组中,这样,在初始化过程中就只需要根据屏幕的尺寸来计算数组的存放方式,,绘制时根据数组的行数和列数进行绘制即可。比如一个320*320的手机屏幕,计算出来的九宫格数组可能是:
    {
        {0, 1, 2},
        {3, 4, 5},
        {6, 7, 8}
    }
而一个176*220的手机屏幕计算出来的数组可能为:
    {
        {0, 1},
        {2, 3},
        {4, 5},
        {6, 7},
        {8,-1}
    }
其中-1代码空,即没有,在绘制时也就不进行绘制。
另外,还有一种比较”极端“的手机屏幕,屏幕尺寸非常小,一屏只能显示一个,则数组的布局如下图所示。
    {
        {0},
        {1},
        {2},
        {3},
        {4},
        {5},
        {6},
        {7},
        {8},
    }
当一屏不能显示完全时,我们需要通过一个变量来记录当前屏幕绘制数组中的索引,即mArrayIndex,绘制时则从该索引所指向的数组行数开始,绘制一屏能够显示行数即可。
假设九宫格的数组为mArrayGrid,行数和列数分别为col和row,每一屏能显示的行数为mMaxCol,则绘制过程的代码如下所示。
for (int i = 0; i < mMaxCol; i++) {
for (int j = 0; j < row; j++) {
              g.drawImage(mGridImage[mArrayIndex+i*row+j], x+j*w, y+i*h, 0);
}
}
其中w,h分别为每个格子的宽度和高度,mGridImage数组为每个格子的图像数据。
对于当前需要选中的格子绘制不同的背景或者加上选择框即可,在按键处理过程中更新当前选择格子的变量,如果需要翻页,则同时更新mArrayIndex变量即可。对于选中的索引就就是mArrayGrid数组中的0-8的数值即确定。
根据需要,我们还是可要将其封装为一个控件,封装代码如下所示。
public class GridView {
    byte[][] mArrayGrid;//格子的数据索引
    int mSceneWidth;//屏幕的宽度
    int mSceneHeight;//屏幕的高度
    int mCol,mRow;//要计算的格子数组的行和列
    int mMaxCol;//一屏幕能够显示最大行数
    int mGridWidth;//单个格子的宽度和高度
    int mGridHeight;
    int mArrayIndex;//当前行的索引,对应数组的行
    public void init(int sW,int sH,int gW,int gH,String menuItem){
        //...
    }
    public void init(int sW,int sH,int gW,int gH,Image menuItem){
        //...
    }
   
    public void draw(Graphics g){
        for (int i = 0; i < mMaxCol; i++) {
            for (int j = 0; j < mRow; j++) {
                g.drawImage(mGridImage[mArrayIndex+i*mRow+j], x+j*mGridWidth, y+i*mGridHeight, 0);
                //or
                g.drawString(mGridString[mArrayIndex+i*mRow+j], x+j*mGridWidth, y+i*mGridHeight, 0);
            }
        }
    }
   
    public void isNext(){
       
    }
    public void isPrev(){
       
    }
    public void next(){
       
    }
    public void prev(){
       
    }
}
因为九宫格的菜单,可要是图片素菜也可以是文字内容,并且选中状态可以是不同的背景,也可以是由矩形框框住,所以实现的种类也很多,代码页就比较长,由于篇幅关系,这里不能一一贴出所有的实现代码,相同通过对九宫格实现的原理的理解,大家都能完成上面的框架,最后提醒大家一下,对于九宫格的事件触发处理,可以通过回调函数的方式来传入处理事件的函数给我们所封装的GridView类。
到这里我们就可以在JavaME平台使用自己实现的九宫格控件了,在网络上笔者也看到各种实现九宫格的算法,但是有很大一部分都没有自动适应屏幕分辨率的功能,都需要较大的改动程序才能实现,因此大家需要谨慎使用。

JAVA GUI(图形用户界面) Java提供了三个主要包做GUI开发:java.awt 包 – 主要提供字体/布局管理器javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)java.awt.event 包 – 事件处理,后台功能的实现。 阅读详情

相关推荐

MaixCAM2 4K AI相机硬件解析与开发实战

嵌入式AI视觉开发中,边缘计算设备的选择直接影响项目落地效果。以NPU为核心的AI加速技术通过专用指令集优化,可在低功耗下实现10+TOPS算力,典型应用包括工业质检、智能门禁等实时场景。MaixCAM2作为新一代4K AI相机,搭载AX630 SoC芯片,其双核Cortex-A53与NPU的异构架构,在运行YOLOv11n模型时可达113FPS,显著优于传统方案。开发时需注意模型量化部署技巧,如INT8量化需500+张校准图片覆盖多光照条件,避免准确率下降。设备扩展性方面,PMOD接口支持热成像、ToF传

weixin_30819085的博客 690

java实现九宫格小游戏

二维数组实现九宫格小游戏,还未添加输赢判断逻辑,后面补充。

qq_24896735的博客 1235

php对接建行h5网页支付

php对接建行h5网页支付前言H5页面支付H5页面支付回调通知退款及其他的业务 前言 最近接到公司乙方要求,需要再支付上面增加建行的支付渠道。之前一直用的都是微信和支付宝这种第三方支付平台,银行直接对接比较少。没办法就只能上网搜索,搜索一番返现网上对接建行的资料比较少,没办法只好摸着石头过河,中间也借鉴了一些大佬的文章内容。 H5页面支付 根据建行的h5网页支付对接文档,还是可以看出是比较简单的。...

lihua100862的博客 5411

Unity学习笔记——UI九宫格的原理

UI九宫格的深入理解

m0_52058484的博客 4347

Win10下YOLOv8环境搭建避坑指南:从CUDA 11.6到cuDNN配置全流程

本文详细介绍了在Windows 10系统下搭建YOLOv8环境的完整流程,包括CUDA 11.6和cuDNN的配置步骤,以及常见问题的解决方案。通过硬件准备、软件安装、环境验证和性能优化等环节,帮助开发者高效完成YOLOv8环境配置,提升目标检测项目的开发效率。

defi6farmer的博客 224

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

Unity中的UI九宫格

9宫格

张不无的博客 6830

#systemverilog# 之 event region 和 timeslot 仿真调度(三)Verdi 辅助查看

通过今天的学习,我们知道:event region 是event sequence 的全集。我们打开了 event region feature 也就开启了event sequence 的功能。

那么菜的博客 1365

iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案” 前言(扯几句淡先) 回顾到学习UI过程中的九宫格布局时,发现当时学的东西真是不少。 这个阶段最大的特点就是:知识点繁多且琐碎。 我们的目标就是要将这琐碎的知识点灵活运用、融汇贯通,通过不同的实现方式来实现相同的功能,最后进行比较得到最好的那种方式。这个求知的过程就是我们最需要学习的,在过程中我们学会了自我...

weixin_30826095的博客 255

基于YOLOv11的军事目标识别系统设计与实现(坦克、舰船检测)

DOTA-v2.0(包含多种军事装备的航拍图像)图片数量:11,268类别:18类,包括坦克、舰船、战斗机等分辨率:800×800~4000×4000HRSC2016(高分辨率舰船检测数据集)图片数量:1,061类别:舰船及子类特点:包含多种视角和复杂背景图片数量:5,000+类别:22种军用飞机标注:精确边界框自建数据集建议收集来源:公开军事演习视频、卫星图像、模拟游戏截图数据增强:模拟不同天气、遮挡、低光照等战场环境。

YOLO 450

RT-DERT安卓部署教程

这个文档中的代码案例,实现了拍照和选图识别,两个功能,可以看效果图。UI做了美化:显示类别机和数量。代码下载地址:通过网盘分享的文件:android_rtdert.zip链接: https://pan.baidu.com/s/1k6e-d_lov1OPgUmit5i_cA?pwd=hpfi 提取码: hpfi–来自百度网盘超级会员v8的分享。

AIOT魔法师 196

BlackBerryUI设计大全(四)

2基于Third party的UI库的设计<br />直接使用MIDP的UI组件来做应用界面和接口,很多时候需要大量的编程和设计工作。为了减轻开发者的负担,J2ME平台上也有很多这样的UI设计支撑库,本节我们一LWUIT这个应用比较广泛的例子为例,说明如果在BlackBerry J2ME平台上使用GUI Library去设计这个九宫格程序。2.1 基于LWUIT的UI库的设计规范<br />The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT

salvatore_zhang的黑莓开发专栏 1541

1998年高教社杯全国大学生数学建模竞赛 B 题:《灾情巡视路线》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 883

手机java淘汰_极客修:对手并不止安卓!这些年iOS竟然把这么多手机系统淘汰掉了...

原标题:极客修:对手并不止安卓!这些年iOS竟然把这么多手机系统淘汰掉了文/极客修小编手机操作系统说到手机的操作系统,现在的年轻人基本上只认识安卓和iOS,毕竟目前智能手机市场上这两个系统是最主流的,然而手机的操作系统并不是一开始就只有这两个,对于小编这种90后中老年人来说,过去十年间各种或历久弥新或昙花一现的手机操作系统也是一种情怀,今天我们就来看下一些比较知名的手机操作系统,看看它们是如何在安...

weixin_33217004的博客 442

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Lwuit实现九宫图特效程序

最近在网上看到很多九宫图的程序说明,但大多数是转载的,一些知识点的地方对于初学者来说还是比较难懂的,我在原来的程序上修改了一下,也加了一些注释,希望对大家有所帮助吧! 程序截图 [img]http://dl.iteye.com/upload/attachment/199168/b382b03a-2dec-30de-b162-75...

邪道少年 145

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java-UI设计(仿QQ登录界面)

学习完类与对象和类与继承之后,对面向对象编程(OOP)有了基本的了解。OOP的核心思路就是先定义类,设置好类的属性和方法,然后创建对象,调用方法,最新

hehecx123的博客 3772

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java程序设计——GUI设计

设计一个窗口界面,用于学生基本信息如学号、姓名、性别、年龄、专业等内容的输入。使用多种界面元素,如JButton,JTextField,JCheckBox,JTextArea等。 适当使用对话框进行提示信息展示。 (A)点击“保存”按钮,能够把输入的信息保存入文件; (B)点击“加载”按钮,能够通过读取指定位置的文件,加载信息来刷新界面。 要求:处理事件响应;注意对异常的处理。

m0_73059486的博客 2782

java 基础ui设计

package ui; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.HWND; public class ui { public static void main(String[] args) { ui lo = new ui(); lo.showUI(); } public void showUI(){ //窗体类 javax..

qq_42578192的博客 1690

ui九宫格切图_【九宫切图】什么是九宫绘图,九宫格绘法

九宫切图在控件美化的时候会经常的用到 比如:20140630220626_56850.png (3.13 KB, 下载次数: 42)【九宫切图】什么是九宫绘图,九宫格绘法2014-7-21 11:45 上传最左边的是一个按钮的素材、、假设要把它做成一个按钮、、但是 需要用的按钮是多大不确定的、总不能一个按钮做一张图吧?而如果直接对图片进行拉升什么的 明显可以看到右边的两个看着怪别扭、于是乎 这个时...

weixin_39868248的博客 3150

Java Swing界面设计UI(全)

原文链接: http://blog.youkuaiyun.com/xietansheng/article/details/72814531 Java Swing GUI 图形界面窗口开发基础教程,本教程将系统性地详细介绍 Java Swing 开发中常用的一些组件、布局管理器等相关知识技术,并...

weixin_51201930的博客 2万+

unity3d UGUI九宫格纹理拉伸的使用

本篇文章我们来学习下在unity new ui即UGUI九宫格纹理拉伸的使用,不论是游戏中的UI,还是应用中的UI,纹理九宫格拉伸都是必不可少的,因为采用这种拉伸方式,可以最大化的节省纹理资源,任意缩放图片还能保持一个不错的效果,因此在手游和app中用的较多。我们先学习下九宫格拉伸的原理先,如下图所示! 1.原理 把纹理用4条线分割成9部分(如上图),通过观察可以发现,5是最规则的形状(矩

RainsSoft 6万+

GUI实现九宫格来完成屏幕自适应

类中的成员变量包括,私有的位置信息,公共的设置宽的变量,公共的设置高的变量,公共的设置偏移量的变量2个枚举变量,成员属性包括得到位置的属性(只可以得不可以改),在得到属性的同时计算出位置的具体的信息。我们把屏幕看成是一个九宫格的话可以分为左上,中上,右上,左,中,右,左下,中下,右下。类中的成员方法包括,设置关于控件的位置,设置关于屏幕的位置加上控件的位置加上偏移量。屏幕的锚点加上控件的轴心点加上偏移量即可实现控件在不同屏幕大小的位置自适应。设置位置的九宫格可以使用一个类来设置相关的信息。

2401_84691335的博客 682

Java详解:GUI图形用户界面设计—容器组件及面板布局方式

✍功能组件不能独立地显示出来,必须将组件放在一定的容器(container)中才可以显示出来;容器可以容纳多个组件,通过调用容器的add(Component comp)方法向容器中添加组件;窗口(JFrame)和面板(JPanel)是最常用的两个容器。

小谷同学的博客 4859

黑马微信小程序-实现本地服务九宫格并展示商品列表

黑马微信小程序-实现本地服务九宫格并展示商品列表详细说明

m0_62785037的博客 5356

优化Java中图形界面设计的技巧

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!

技术研究中心 674

UI中的九宫格概念

控件坐标计算公式:相对屏幕位置+中心点偏移位置+偏移位置,在UGUI,屏幕相对位置就是UI元素锚点的位置,中心点的偏移位置就是轴心点位置,偏移位置就是Pos(X,Y,Z)的值。分辨率自适应就是当分辨率改变时重新计算UI控件的位置。

x032313的博客 340
上一篇: JavaME UI设计之图像特效二
下一篇: JavaME UI设计之滚动条
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值