java swing 样式如何样聚焦和选择文字

已解决问题
java swing 怎么设置文本框只能输入数字
浏览次数:4543
用手机阿里扫一扫
最满意答案
要在文本框上加上键盘侦听,如果键值的不是数字键,就不动,这样就实现了
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is okjava swing 有几个排列在一起的按钮,按钮上有文字,文字少的按钮小,文字多的按钮大,怎么样让按钮一样大小呢? - ITeye问答
java swing 有几个排列在一起的按钮,按钮上有文字,文字少的按钮小,文字多的按钮大,怎么样让按钮一样大小呢?
采纳的答案
swing提供了布局管理器,就像页面编程一样,可以控制显示组件的大小。你可以根据布局管理器对组建(按钮/输入/文本框)设置大小,排列方式,位置等。 你的文字少的按钮小,字多的按钮大,那是因为默认的布局管理器是流式布局管理器。他的大小自适应你的文字的多少,你只要根据布局管理器,设定组件的大小,那么就不会依赖于容器里面字体的多少了,详见文章 Swing布局管理器简介&
设置width属性。
已解决问题
未解决问题温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
& & & & 让我们先来说说居中的算法。其实很简单,将外面控件的长度减去显示内容的长度,然后除以2,这样就得到了放置内容的X坐标。同理,将控件的高度减去内容的高度,然后除以2,就得到了Y坐标。通过X,Y坐标我们就可以在指定点上绘制内容了,这样的算法适用于任何需要居中显示的情况。但是如果需要垂直居中Swing的字体,我们需要小小的变通一下。& & & & 在文章的最后可以下载到我写的例子,让我们结合例子来解释。让我们打开FontComponent类,这个类继承与JComponent,我们在paintComponent方法中来绘制我们的字体。& & & & 首先,我们如何获得外面控件的尺寸呢?在这个例子中,外面的控件就是JFrame的容器Container。在布局管理器的作用下,Swing会将包含各种绘制信息的Graphics2D对象传给paintComponent方法。通过&Rectangle clip = g2.getClipBounds() 这行代码我就可以获取到可以绘制的区域尺寸,即Container容器为FontComponent对象预留的区域。可以通过 clip.width 和&clip.height 属性来获取尺寸的长和高。& & & & 接下来该获取需要绘制的字符串的长度了,请关注如下四行代码:& & & &&Font font = new Font("MS Song", Font.BOLD, 24);& & & & g2.setFont(font);
FontMetrics fm = g2.getFontMetrics(font);
int textWidth = fm.stringWidth(text);& & & & 我们先创建一个Font对象,这个对象决定了字体的类型,样式和大小。然后将font对象设置给Graphics2D对象,这样我们就能通过getFontMetrics方法获取到一个FontMetrics对象,通过它可以计算出在指定字体下,字符串被绘制出来的长度。有了外面控件的长度,有了显示内容的长度,我们可以通过上面提到的算法计算出 X 坐标:int x = (clip.width - textWidth) / 2;& & & & 下面该计算 Y 坐标了,如果绘制的内容是一张图片,那么使用上面的算法就足够了,但是Swing绘制字体的机制比较特别,需要我们稍微调整一下。Swing(确切的说应该是Java2D)在绘制每一行字体的时候,以一条基线为标准来绘制。这样无论字体大小,样式,类型都可以确保在一条直线上。在基线上面的高度叫Ascent,在基线下面的部分叫Descent,如下图:&& & & & 所以我们要想获取内容的高度,只要将Ascent高度和Descent的高度相加即可。那么计算 Y 的坐标算法如下:& & & &&int ascent = fm.getAscent();
int descent = fm.getDescent();
int y = (clip.height - (ascent + descent)) / 2 +& & & & 你可能对最后一行感到疑惑:为什么最后需要加上ascent?别忘了,Java2D绘制字体是从基线开始绘制,我们要做的是,首先是将内容放在垂直居中的位置,然后将 Y 坐标定位到基线的位置,好让Java2D从这里开始绘制。& & & &&FontTest例子
阅读(4677)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Java Swing 字体居中显示',
blogAbstract:'& & & & 在开发Swing程序的时候,很多情况下为了美观,我们需要将字体水平和垂直居中于某一个控件。& & & & 让我们先来说说居中的算法。其实很简单,将外面控件的长度减去显示内容的长度,然后除以2,这样就得到了放置内容的X坐标。同理,将控件的高度减去内容的高度,然后除以2,就得到了Y坐标。通过X,Y坐标我们就可以在指定点上绘制内容了,这样的算法适用于任何需要居中显示的情况。但是如果需要垂直居中Swing的字体,我们需要小小的变通一下。& & & & 在文章的最后可以下载到我写的例子,让我们结合例子来解释。让我们打开FontComponent类,这个类继承与JComponent,我们在paintComponent方法中来绘制我们的字体。',
blogTag:'java,2d,swing,字体,居中',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:1,
publishTime:4,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!鏂囩珷鍒楄〃
鍗氬?鍒嗙被锛}

我要回帖

更多关于 java swing 显示文字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信