使图像像Java中的按钮一样,没有实际Jbutton的功能

时间:2014-03-02 12:57:19

标签: java swing jbutton

image这里我创建了一个看起来像3d按钮的图像,我想在我的应用程序中将它用作java swing中的按钮。

我尝试了以下代码:

 ImageIcon water = new ImageIcon("button.jpeg"); 
    exceptionButton = new JButton(water);

我把它作为图像,但它的特色就像按钮的边框,所以我使用了以下代码:

   exceptionButton.setBorder(BorderFactory.createEmptyBorder());
    exceptionButton.setContentAreaFilled(false);
    exceptionButton.setFocusPainted(false);
    exceptionButton.setOpaque(false);

但它没有帮助。我希望实际图像充当按钮。图像有圆角但现在图像进入按钮并失去圆角的实际效果。另外,当用户将鼠标悬停在它上面时,我希望它集中注意力。由于我使用上面的代码放置了按钮图像,因此当用户点击它时,我没有获得按下按钮的效果。

我应该如何更改我的代码?

2 个答案:

答案 0 :(得分:1)

  

图像有圆角但现在图像进入按钮并失去圆角的实际效果。

不要使用EmptyBorder,它总是Rectangular。另请尝试使用setBorderPainted(false)

  

此外,我希望在用户将鼠标悬停在其上时将其集中。因为我已经为上面的代码添加了按钮图像

然后您还需要提供翻转图标。见setRolloverIcon(...)

答案 1 :(得分:0)

使用jlabel而不是jbutton

 jLabel5 = new javax.swing.JLabel();

    jLabel5.setIcon(new javax.swing.ImageIcon(youriconpath)); 
jLabel5.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        jLabel5MouseClicked(evt);
    }
    public void mouseEntered(java.awt.event.MouseEvent evt) {
        jLabel5MouseEntered(evt);
    }
    public void mouseExited(java.awt.event.MouseEvent evt) {
        jLabel5MouseExited(evt);
    }
});

    private void jLabel5MouseClicked(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
        // write your code 
    }                                    

    private void jLabel5MouseEntered(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
        //change your jlabel icon 
        jLabel5.setIcon(new ImageIcon("yourNewIconpath"));
    }                                    

    private void jLabel5MouseExited(java.awt.event.MouseEvent evt) {                                    
        // TODO add your handling code here:
        //resete your icon 
    }