在windows的“开始”菜单上,会在菜单左侧显示一幅图像.很多基于windows的软件也有类似效果的菜单.用java swing可以制作出类似效果的菜单吗?答案当然是肯定的,而且非常简单.
jimagedpopupmenu在创建时可以接受一个字符串,生成一副内存图片bufferedimage.然后,我们需要覆盖jcomponent的getinsets方法,重新计算inset的left值,将其在原数值基础上加上图片的宽度,然后返回: 【程序编程相关:WoodPecker开源社区众生像--老】
我们首先从swing的jpopupmenu组件进行扩展,让其接受一个图片,显示在左侧;或者接受一个字符串,动态生成图片后,在显示在左侧.为了避免准备图片的麻烦,我们就以动态生成内存图片为例,编写一个jimagedpopupmenu类. 【推荐阅读:用Java创建带图标和缩进的JCombo】
??????? insets insets = (insets)super.getinsets().clone(); 【扩展信息:[Tip]你的Oracle是32位的还是】?public insets getinsets() {
??????? insets.left += imageicon.geticonwidth();??????? return insets;??? }最后,覆盖paintcomponent方法,在原基础上增加图片的绘制:
??? public void paintcomponent(graphics g) {??????? super.paintcomponent(g);??????? if (imageicon != null) {??????????? insets insets = getinsets();??????????? g.drawimage(imageicon.getimage(),??????????????????????? insets.left - imageicon.geticonwidth(),??????????????????????? insets.top,??????????????????????? null);??????? }??? }完整代码如下:
... 下一页