知识大全 JFC/Swing活学活用之定制JList显示

Posted

篇首语:君子报仇,十年不晚。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JFC/Swing活学活用之定制JList显示相关的知识,希望对你有一定的参考价值。

JFC/Swing活学活用之定制JList显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  作为用户 我们希望的应用程序应该是界面交互清晰明了的 而不是把Locale对象的ISO代码或者是颜色的RGB值显示出来 界面交互友好的软件才能吸引用户 ISO代码或者RGB值对编程的人来说或许有用 但并不适合于终端用户     幸运的是 Locale对象有个displayName属性适合用来为用户显示信息 我们可用该属性来替代toString()方法用于JList的显示 这样一来就能使得JList更具可读性 比较以下代码片段中Locale对象的toString()方法和getDisplayName方法的返回值     Locale[] locales = new Locale( en US ) new Locale( fr FR )   new Locale( th TH ) new Locale( es MX )   new Locale( ja JP ) ;  System out printf( % s\\t%s\\n toString getDisplayName );  System out printf( % s\\t%s\\n );  for (Locale l : locales)    System out printf( % s\\t%s\\n l toString() l getDisplayName());      在将有中文Windows XP的机器上 运行结果如下所示     toString getDisplayName     en_US 英文 (美国)  fr_FR 法文 (法国)  th_TH 泰文 (泰国)  es_MX 西班牙文 (墨西哥)  ja_JP 日文 (日本)    Locale对象的displayName属性对用户来说更具可读性 也更贴近用户 如果应用程序里的JList使用displayName属性 那么看起来会是下面的样子      >    那么这个效果是怎么实现的呢?为了让列表在用户界面上有更好的表现 我们要创建自己的ListCellRenderer 这样在上面的例子中就可以通过displayName属性来替代默认的toString()方法的返回值     类似地 如果我们的选择颜色的应用程序 我们也可以用定制的ListCellRenderer来显示Color对象对应的名称和它们的颜色 如下图所示      >    我们先来了解一下ListCellRenderer的工作原理 ListCellRenderer接口只定义了一个方法 该方法返回一个组件     Public abstract Component getListCellRendererComponent(JList list Object value Int index boolean isSelected  boolean cellHasFocus)    由getListCellRendererComponent返回的组件的作用就像一个像皮图章 它把这个组件绘制到列表中列表项所占的区域 要注意的一点是 列表单元并不包含这个组件 这个组件只是绘制到列表单元上 这是很重要的 因为不能操纵这个组件 只能使用这个组件的可见代表来绘制列表单元     缺省情况下 JList的实例配备一个绘制器 它是ListCellRenderer接口的一个简单实现 即DefaultListCellRenderer类 该类扩展了JLabel类 而且可以显示字符串或图标 但不能在一个单元中同时显示字符串和图标     虽然自定义的ListCellRenderer可继承任何Component 但对于上述应用我们选取的解决方案还是使用DefaultListCellRenderer的好 因为继承了JLabel 可以方便的设置文本 颜色 甚至图片 参考下面这段代码     public Component getListCellRendererComponent(JList list Object value   int index boolean isSelected boolean cellHasFocus)    super getListCellRendererComponent(list value index isSelected cellHasFocus);  Locale l = (Locale) value;  setText(l getDisplayName());  return this;      renderer先调用它的超类的getListCellRendererComponent()方法来绘制组件 接下来只需要进行一些简单的设置就可以了 这里我们使用被选中的Locale对象的getDisplayName()方法的返回值来设置文本     有了定制的ListCellRenderer 让JList来使用这个新的renderer就更简单了 调用JList对象的setCellRenderer()方法并且把新创建的ListCellRenderer实例作为参数传递进去 就足够了 JList对象将用定制的renderer来展现列表里每个Locale对象 参考下面的代码片段     ListCellRenderer localeRenderer = new LocaleRenderer();  localeList setCellRenderer(localeRenderer);    定制Color选取器的例子与Locale的例子有点不同 不同之处在于 装饰器不仅设置了选项单元的文本内容 还设置了它的颜色与对应的背景色 因为Color对象本身里没有内建的文本名 所以我们需要在颜色名和颜色之间建立映射关系 在这里我们使用HashMap来完成映射操作 具体代码实例请见参考资料      结束语    最后再提一下对象在JList中是如何显示的 不必非得依赖对象提供的toString()方法 因为我们可以用ListCellRenderer来显示任何想要显示的和对象相关的文本 此外 我们也可以在选取的作为ListCellRenderer的组件上选用任何颜色或图形来绘制 我们也可以将同样的绘制器应用于JComboBox 使用定制的ListCellRenderer 可以使用JList和JComboBox组件来编写用户界面更加友好的应用程式 cha138/Article/program/Java/hx/201311/26225

相关参考

如何活用动向指标DMI

如何活用动向指标DMI?怎么活用动向指标DMI?活用动向指标DMI。我们已经了解了利用动向指标中+DI和-DI的交叉,或ADX和ADXR的交叉可以把握买卖时机,但是客观上动向指标主要还是用来确认某种趋

活用动向指标

活用动向指标我们已经讲解了利用动向指标中+DI和-DI的交叉,或ADX和ADXR的交叉可以把握买卖时机,但是客观上动向指标主要还是用来确认某种趋势的,有些时候单纯使用交叉讯号买卖可能实战效果并不理想。

活用ROC指标

活用ROC指标一般而言,对于只能达到超买线一(参数值5-10)的个股,投资者要见利就跑;而对于能达到超买线二(参数值12-17)的个股,应相应地进行波段的高抛低吸。而一旦个股能够摆脱这两条常态超买线,

如何活用EXPMA指标

如何活用EXPMA指标在一般情况下,许多投资者均以KDJ指标和MACD指标作为买卖的重要指示,当大盘或个股的KDJ指标和当大盘或个股的KDJ指标和MACD指标在高位形成死叉后,他们通常会卖出。但是,由

活用KDJ指标获利就撤退

活用KDJ指标获利就撤退投资者一般都知道它的金叉与死叉,也知道下20属超卖,上80属超买,50是强弱的分水岭。在这里,我们强调一下,稳健型的投资者可考虑于20或以下金叉时买进,然而一般来讲,它升至50

活用ROC指标,弱市捕捉特立独行牛股

活用ROC指标,弱市捕捉特立独行牛股一般而言,对于只能达到超买线一(参数值5-10)的个股,投资者要见利就跑;而对于能达到超买线二(参数值12-17)的个股,应相应地进行波段的高抛低吸。而一旦个股能够

MACD指标:如何活用指数移动平均线

MACD指标:如何活用指数移动平均线在一般情况下,许多投资者均以KDJ指标和MACD指标作为买卖的重要指示,当大盘或个股的KDJ指标和当大盘或个股的KDJ指标和MACD指标在高位形成死叉后,他们通常会

活用川芎嗪8例

川芎嗪是从中药川芎中提炼出来的,是川芎的主要有效成分。目前,川芎嗪作为现代用药,用作静脉注射剂,被较多地应用于缺血性脑血管病,如:脑供血不足、脑血栓形成、脑栓塞等。临床表明:川芎嗪的作用还远不止这些。

怎样活用KDJ指标确定反弹后的卖点

投资者一般都知道它的金叉与死叉,也知道下20属超卖,上80属超买,50是强弱的分水岭。在这里,我们强调一下,稳健型的投资者可考虑于20或以下金叉时买进,然而一般来讲,它升至50时可能涨幅有限,而对于激

什么是定制家具?定制家具有什么优点缺点?怎样选择定制家具?

定制家具——个性化强,但价格高。定制家具是相对于成品家具而言的。成品家具的设计相对大众化,很难满足追求个性化的消费者,同时,尺寸或格调也难免与房屋空间不符。在这种情况下,为消费者量身定做的定制家具出现