仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 885|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA教程之用Java创立带图标和缩进的JComboBox

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:45:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。创立默许的JComboBox没法在每一个条目上显现图标、缩进等款式。可是Swing的MVC计划布局为各类组件供应了无与伦比的可扩大性。为了完成这一点,我们能够创立一个新的Renderer来卖力每一个条目标绘制。

起首我们新写一个类ImagedComboBoxItem,它封装了一个下拉条目标信息,包含图标、笔墨、缩进等:

classImagedComboBoxItem{
privateIconicon=null;
privateStringtext=null;
privateintindent=0;

ImagedComboBoxItem(Stringtext,Iconicon,intindent){
this.text=text;
this.icon=icon;
this.indent=indent;
}

publicStringgetText(){
returntext;
}

publicIcongetIcon(){
returnicon;
}

publicintgetIndent(){
returnindent;
}
}

然后新建JImagedComboBox类并从JComboBox承继。在机关函数中,新建一个DefaultListCellRenderer作为新的Renderer,并掩盖其getListCellRendererComponent办法。在新的getListCellRendererComponent办法中,起首仍旧挪用父对象的该办法,以便完成一般条目标绘制;然后判别条目是不是是ImagedComboBoxItem实例。假如是,则显现ImagedComboBoxItem的笔墨、图标,并显现缩进。为了更便利的显现左边缩进,我们间接创立一个EmptyBorder并设置左边缩进数目,并设置到DefaultListCellRenderer中。DefaultListCellRenderer从JLabel承继而来,以是可间接承受各类Border。这里我们以每一个缩进10象素为例。

好了,以下是完全代码:

importjava.util.*;

importjava.awt.*;
importjavax.swing.*;

publicclassJImagedComboBoxextendsJComboBox{
publicJImagedComboBox(Vectorvalues){
super(values);
ListCellRendererrenderer=newDefaultListCellRenderer(){
publicComponentgetListCellRendererComponent(
JListlist,
Objectvalue,
intindex,
booleanisSelected,
booleancellHasFocus){
super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);
if(valueinstanceofImagedComboBoxItem){
ImagedComboBoxItemitem=(ImagedComboBoxItem)value;
this.setText(item.getText());
this.setIcon(item.getIcon());
if(isPopupVisible()){
intoffset=10*item.getIndent();
this.setBorder(BorderFactory.createEmptyBorder(0,offset,0,0));
}
}
returnthis;
}
};
this.setRenderer(renderer);
}

publicstaticvoidmain(String[]args){
JFrameframe=newJFrame();
frame.setSize(400,400);
Vectorvalues=newVector();
IconopenIcon=newImageIcon(JImagedComboBox.class.getResource("Open16.gif"));
IconnewIcon=newImageIcon(JImagedComboBox.class.getResource("New16.gif"));
for(inti=0;i<5;i++){
values.addElement(newImagedComboBoxItem("Directory"+i,openIcon,i));
}
for(inti=0;i<5;i++){
values.addElement(newImagedComboBoxItem("ImageItem"+i,newIcon,5));
}
JImagedComboBoxcomboBox=newJImagedComboBox(values);
frame.getContentPane().add(comboBox,BorderLayout.NORTH);
frame.show();
}
}

classImagedComboBoxItem{
privateIconicon=null;
privateStringtext=null;
privateintindent=0;

ImagedComboBoxItem(Stringtext,Iconicon,intindent){
this.text=text;
this.icon=icon;
this.indent=indent;
}

publicStringgetText(){
returntext;
}

publicIcongetIcon(){
returnicon;
}

publicintgetIndent(){
returnindent;
}
}

个中,两个图标在这里:Open16.gif,New16.gif


市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-21 13:53:33 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
透明 该用户已被删除
板凳
发表于 2015-1-21 14:25:25 来自手机 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
只想知道 该用户已被删除
地板
发表于 2015-1-24 07:36:38 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再现理想 该用户已被删除
5#
发表于 2015-1-24 13:49:27 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
变相怪杰 该用户已被删除
6#
发表于 2015-2-1 16:17:10 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
谁可相欹 该用户已被删除
7#
发表于 2015-2-7 08:08:58 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
山那边是海 该用户已被删除
8#
发表于 2015-2-8 07:49:19 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
冷月葬花魂 该用户已被删除
9#
发表于 2015-2-22 20:52:17 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
飘灵儿 该用户已被删除
10#
发表于 2015-2-24 18:50:26 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
深爱那片海 该用户已被删除
11#
 楼主| 发表于 2015-3-4 05:17:44 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
柔情似水 该用户已被删除
12#
发表于 2015-3-10 12:25:17 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
老尸 该用户已被删除
13#
发表于 2015-3-15 13:07:14 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
小妖女 该用户已被删除
14#
发表于 2015-3-20 06:52:02 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
第二个灵魂 该用户已被删除
15#
发表于 2015-3-20 14:01:49 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
海妖 该用户已被删除
16#
发表于 2015-4-1 02:35:51 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
莫相离 该用户已被删除
17#
发表于 2015-4-12 07:45:23 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
兰色精灵 该用户已被删除
18#
发表于 2015-4-14 03:18:33 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
小魔女 该用户已被删除
19#
发表于 2015-4-15 01:23:12 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 18:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表