2012-01-23 7 views
0

とウィンドウこれは、私は簡単な手順でのJavaという本からGUIのために得た基本的な例ですが、私は例のようにコードを実装するが、画像は表示されません。 URLをgetClassLoaderのために表示するには、何をする必要がありますか?のJPanel - ボタン

理想的には私は自分のワークスペースにファイルを保存して、GUIの一部として、そのファイルを使用できるようにしたいと思います。

import javax.swing.*; 

class Buttons extends JFrame { 

    JPanel pnl = new JPanel(); 
    ImageIcon tick = new ImageIcon("tickURL"); 
    ImageIcon cross = new ImageIcon("crossURL"); 

    JButton btn = new JButton("Click Me"); 
    JButton tickBtn = new JButton(tick); 
    JButton crossBtn = new JButton("STOP", cross); 

    ClassLoader ldr = this.getClass().getClassLoader(); 
    java.net.URL tickURL = ldr.getResource("tick.png"); 
    java.net.URL crossURL = ldr.getResource("cross.png"); 

    public Buttons(){ 

     super("Swing Window"); 
     setSize(500, 200); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     add(pnl); 
     setVisible(true); 

     pnl.add(btn); 
     pnl.add(tickBtn); 
     pnl.add(crossBtn); 

    } 

    public static void main(String[]Args){ 

     Buttons gui = new Buttons(); 

    } 

} 
+1

編集中に、あなたはコードサンプルとCtrlキーを押しながら+ Kにしたいテキストをハイライト表示します。 – Jeffrey

+2

GUIに関する書籍でEDTでGUIコードが呼び出されない例がある場合は、すぐに本を投げ捨てて、代わりにSwingチュートリアルに切り替えます。 – Robin

+0

Java in Easy Stepsは2001年に出版されました。あなたはCobolも習得しているかもしれません。 Swingチュートリアルに切り替えます。 http://docs.oracle.com/javase/tutorial/uiswing/ –

答えて

1
ClassLoader ldr = this.getClass().getClassLoader(); 
java.net.URL tickURL = ldr.getResource("tick.png"); 
java.net.URL crossURL = ldr.getResource("cross.png"); 

JPanel pnl = new JPanel(); 
ImageIcon tick = new ImageIcon(tickURL);  // <-- a URL is needed here, not a string 
ImageIcon cross = new ImageIcon(crossURL); // same here 

JButton btn = new JButton("Click Me"); 
JButton tickBtn = new JButton(tick); 
JButton crossBtn = new JButton("STOP", cross); 
  1. これらのアイコン
であなたのボタンを作成
  • 、これらの資産を使用してアイコンを作成
  • 、(彼らはあなたのクラスパスにある場合)のク​​ラスローダを使用して資産を読み込みます

    そのように簡単です。

  • +0

    これにはファイルパスが含まれていますか? –

    +0

    @HopelessProgrammer 'filepaths'はどういう意味ですか?それは大文字小文字のクラス名ではありませんか、スペースを追加するのを忘れましたか? –

    +0

    getResource()メソッドでファイルパスを使用することができます。これはクラスパスと一致する必要があります(イメージがgfxパッケージ内にある場合は "gfx/tick.png")。ファイルパスを外部ファイルにするには、classLoaderを使用せず、Fileオブジェクトだけを使用してください。 –

    0

    私は、Java初心者だと同じ悪い結果と同じ本、(何のアイコンは、コードのいずれかのブロックは表示されません)から、同じコードを耕しました。無知な(moiのような)人にとっては、この2つのアイコンがJavaのデフォルトパッケージの一部として利用可能であったと言われていましたが、もちろんそうではありません。

    答えは、これら二つの.PNGファイルがブックために利用可能なダウンロードに含まれており、著者は、コードがそれらを見るであろうように、あなたは、現在のディレクトリにファイルをダウンロードしたと仮定したということです。

    ので、上記の両方の方法は、実際にアイコンが用意されていたときに動作します。

    のダウンロードはこちらをご利用いただけます:http://ineasysteps.com/resource-centre/downloads/