私は最近JButtonクラスを拡張することで、このスレッド(Creating a custom button in Java)をJavaで作成する際にカスタムボタンを作成しましたが、このスレッドのすべてのソリューションはjavaで描画されたグラフィックを使用します。画像ベースでJavaでカスタムJButtonを作成するには?
私は、私が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)これまでのところ私の知識を超えたもの。
誰かがこれを解決する方法を知っていれば、私はとても感謝しています。
ありがとうございます!
コメントのカップル、:a)のpaintComponentをオーバーライドが不正Bである)決して、これまではゲッターCには何も_change_)特には、setSizeが行われますとにかくLayoutManagerによると、正常なアプリケーションでは何の効果もありませんd)getPreferredSizeをオーバーライドして、コンポーネントの内部に基づいて適切なサイジングヒントを返します。ここではイメージのサイズになります。e)ペイントにイメージをロードします(ペイントサイクルで重く持ち上げることはありません!)、代わりに構築時に – kleopatra
btwを一度ロードしてください。Java命名規則を学んでください。 – kleopatra