簡體   English   中英

如何在帶有圖像庫的java中創建自定義JButton?

[英]How to create a custom JButton in java with an image base?

我最近通過擴展JButton類來閱讀這個線程( 在Java中創建自定義按鈕)在java中創建自定義按鈕,但是這個線程上的所有解決方案都使用java中繪制的圖形。

我希望我的按鈕基於我在photoshop中繪制的按鈕圖像。 所以我試着用這個結果應用我在該線程中讀到的內容:

import javax.swing.*;
import java.awt.*;

public class nextButton extends JButton {
    @Override
        protected void paintComponent(Graphics g) {
        Image image = new ImageIcon("nextButton.png").getImage();
        g.drawImage(image,0,0,this);
}

    @Override
    public Dimension getPreferredSize() {
        Dimension size = super.getPreferredSize();
        size.setSize(75, 150);
        return size;
    }
}

當我運行主程序將此按鈕添加到JPanel時,它不會顯示。 我假設它可能是以下幾個原因之一:

a)JButton的大小與圖像不匹配? b)我沒有正確加載圖像。 在我的講師給我的筆記中,他只用“imageName.png”寫出了沒有文件路徑的顯示圖像代碼,所以我不知道這是否是正確的方法,或者程序如何知道加載圖像。 c)迄今為止我所不知道的其他內容。

如果有人知道如何解決這個問題,我將非常感激。

非常感謝!

我之前也問過這個問題。 我發現效果最好的解決方案實際上是這樣做,而不是繪圖。

ImageIcon icon = new ImageIcon("pathOfImageHere.png");
JButton button = new JButton(icon);

這樣就可以將按鈕設置為圖像。 現在我選擇做的是使按鈕不可見並刪除所有邊框。 所以我接下來做了這個:

button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);
button.setFocusPainted(false);

首先,您應該使用ImageIO.read(new File("somefile.png"))來加載Image 請注意,如果沒有指定絕對路徑,則默認為工作目錄中的相對路徑。 如果你的eclipse已用完,那就是項目文件夾。 在jar中,它是jar所在的文件夾(除非另有說明)。

有關如何正確加載圖像的說明,請參閱http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html (還介紹了如何在applet中執行此操作)。

此外,您應該加載一次圖像,然后在每次繪制迭代時重復使用它:

BufferedImage image;

public nextButton() {
    try {
        image = ImageIO.read(new File("nextButton.png"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image, 0, 0, null);
}

@Override
public Dimension getPreferredSize() {
    return new Dimension(image.getWidth(), image.getHeight());
}

如果這對您有用,請告訴我(確保將您的png放在工作目錄中!)。

你為什么不只使用帶有Image的JButton構造函數?

http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JButton.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM