[英]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.