2011-02-07 11 views
0
public class Resources 
{ 
    private static Resources myResource = new Resources(); 

    public static Image getImage(String name) 
    { 
    URL url = myResource.getClass().getResource(name); 
    //URL url = Resources.class.getResource(name); 
    return Toolkit.getDefaultToolkit().getImage(url); 
    } 
} 

私はイメージファイルを配置している場所でこのようなリソースクラスを持っています。私は塗料のコンポーネントでこのJavaイメージはすぐにリソースとしてロードされません。

private Image image = Resources.getImage("image.png"); 

を持っている私のメインのJPanel(ボードの描画)で

私は

g2.drawImage(image, x, y, width, height, null); 

を持っている私が最初にしたボックス(長方形)を作成するときに私の問題があります画像が右手に描かれて、それが可動である(カップハンドルのような)ことを知るためには、画像がすぐにポップアップしないが、どこにあるかをクリックすると表示される。これがクラスの読み込みなどと関係がありますか?

* UPDATE SSCCE LMNOPQRSTUVWXYZが何を意味するのかこれは?

import java.awt.*; 
import java.awt.image.BufferedImage; 
import java.io.*; 
import java.net.*; 
import javax.imageio.ImageIO; 
import javax.swing.*; 


public class ShowImage { 
    static public void main(String args[]) throws Exception { 
    JFrame frame = new JFrame("Display image"); 
    JPanel panel = new testImage(); 
    frame.add(panel); 
    frame.setSize(500, 500); 
    //frame.pack(); 

    //JOptionPane.showMessageDialog(null, "Done setting size"); 
    frame.setVisible(true); 
    frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH); 

    } 
} 

class testImage extends JPanel { 

    Image image = Resources.getImage("pin.png"); 

    public void paintComponent(Graphics g) { 
    g.drawImage(image, 0, 0, 40, 40, null); 
    } 
} 

class Resources 
{ 
    private static Resources myResource = new Resources(); 

    // NOTE: there is no error checking here so if parameter is mistyped 
    // somewhere else in code, then this will probably throw a nullpointerexception 
    public static Image getImage(String name) 
    { 
    // TODO: Find out which way is better or preferred 
    URL url = myResource.getClass().getResource(name); 

    return Toolkit.getDefaultToolkit().getImage(url); 

    } 
} 
+0

あなたの問題は、コードのどこか他の場所にあると思われます。コンテナを再検証するかどうか、おそらくコンポーネントをどのように追加していますか?もっとコードを投稿したいかもしれません。 –

答えて

1

イメージをImageIconに配置してください。 JLabelでこれはあなたのための負荷を処理します。

これがあなたの望むものでない場合は、MediaTrackerのためのgoogleをご覧ください。

+0

いくつかのランダムな点。 1)Toolkit.getImage()は画像を非同期に読み込みます。 2)OPのdrawImage()メソッド呼び出しは、コンポーネントをImageObserverとして、むしろ 'null'で使用する必要があります。 3)イメージ全体を取得するもう1つの方法はImageIO.read()メソッドを使用することです。これは完了するまでブロックします。 –

+0

私はf.e. ..の頭字語であるはずですか? – daveyinaz

+0

f.e. =例えば – kohlehydrat

1

画像はすぐにポップアップしませんが、することになっています。ここで、iは、クリックしたとき、それは

あなたがやっているような音までを示しています。

JLabel label = new JLabel(new ImageIcon(...)); 
frame.pack(); 
frame.setVisible(true); 
frame.add(label); 

基本をコード:

JLabel label = new JLabel(new ImageIcon(...)); 
frame.add(label); 
frame.pack(); 
frame.setVisible(true); 

さらに詳しいヘルプが必要な場合はSSCCEそれは問題を実証している。

関連する問題