制作一个登录界面.在jpanel上添加了一张图片,图片上已经有2个按钮了.请问JAVA中是否有热区这样的功能.类似于DreamWeaver这样的功能?如果没有 我怎么办呢?

解决方案 »

  1.   

    你可以加入JLabel,然后调用setIcon(icon)方法
    icon要这样获得URL url = MyJFrame.class.getResource("图片的全名");//MyFrame是你的主类,图片也要和MyFrame放到同一个包
    Icon icon = new ImageIcon(url);
    JLabel jl = new JLabel();
    jl.setIcon(icon);
    JPanel jp = new JPanel();
    jp.add(jl);
      

  2.   


    这是添加了jbutton 我是想直接在背景图片上 绘制热区.
    就像是html中一样...
      

  3.   

    你的意思是鼠标点击图片上的按钮就会触发按钮事件吧.其实大多人实现是在图片上添加一个按纽,只要设置按纽透明.
    调用 setContentAreaFilled 方法 public void setContentAreaFilled(boolean b)     设置 contentAreaFilled 属性。如果该属性为 true,则按钮将绘制内容区域。如果希望有一个透明的按钮,比如只是一个图标的按钮,那么应该将此属性设置为 false。contentAreaFilled 属性的默认值为 true。调用 setOpaque(false)这个方法比较常用,也比较简单
      

  4.   

    有这么必要吗 我paintimg以后 在添加制定位置的JButton不是更好吗 只是把图片作为JPanel的背景一样解决问题吧
      

  5.   

    如果按你的本意,我感觉是有点困难的,一般的网页上的热区可以画出不规则的区域,在JAVA上感觉是有点困难,不过,我有一个笨方法不知可行不:
    >>你可以假设将一张图片分成若干行列的小单元图片,分得越细小越好,不过统计会很麻烦.
    >>现在你要描绘其中的一个不规则边缘的热区,定义一个关于热区的实体类,里面用于保存在该热区范围内的小单元图片的坐标信息,其实不用将所有该范围的单元都统计,可以只统计一下热区内每一行的起止单元坐标即可.
    >>接下来你要在UI上实现当鼠标移到或点击该热区时执行相应的动作,这个功能可给PANEL添加监听事件,通过捕获鼠标当前坐标然后与你定义的各热区内的坐标范围进行比较,如果在范围之内就执行该热区对应的动作.OK,只是随意想的,不知是否可行,仅供参考.