将图像放在JButton上(不在其中)并使JButton仍然有效

时间:2014-08-10 16:52:10

标签: java image swing jframe jbutton

我目前要做的是将图片放在JButton上,然后仍然可以点击按钮。我不是指将图像放入按钮中,就像某种图标一样。我的意思是在JFrame内有一个图像,在该图像后面有一个按钮,可以点击它。所有帮助表示赞赏。

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JButton;

public class ButtonImage extends JFrame{

    static JButton save;
    JButton cancel;
    ButtonImage(){
            save = new JButton("Save");
            cancel = new JButton("Cancel");

            setLayout(new FlowLayout());
            add(save);
            add(cancel);

            setVisible(true);
            setSize(400,300);
            setLocation(500,400);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setLayout(null);
    }

    public static void main(String[]args){
            new ButtonImage();
            save.setBounds(100,200,90,30);
    }        
}

1 个答案:

答案 0 :(得分:2)

如果图像完全覆盖了按钮,只需在图像上放置一个点击监听器,然后忘记按钮。或者更好的是,JButton可以将图像作为内容,因此改变JButton的外观并不绘制按钮边框,并添加图像。

如果这些技术对您不起作用(假设您想部分地看到图像后面的按钮,那么仍然可以考虑将图像放在按钮中,但是将图像堆肥以包含可见的按钮部分

有很多很好的理由。

  1. 您不必担心争取焦点,因此您的图像无法吞下鼠标。
  2. 制表符和箭头热键将正常工作,“输入点击”行为也是如此。
  3. 您的代码将更好地阅读,这将有助于您更快地完成项目并轻松维护。
  4. 现在,如果图像从不与按钮重叠,那么只需在按钮上方布置图像;但是,在你的写作中,你似乎正在尝试做一些完全不同的事情。