2017-06-29 1 views
1

私は自分のプロジェクト、Githubにカー​​ドゲームをアップロードしたいですし、私のハードドライブから画像をゲームカードのテーブルとして持っています。コンパイル/実行し、ファイルパス全体をハードコード化していないコードをアップロードする方法はありますか?今のところ、その:JComponentにローカルファイルを使用する場合、ファイルパスをハードコードしない方法がありますか?

public static void main(String[] args){ 
    JFrame frame = new JFrame(); 
    JLabel panel = new JLabel(new ImageIcon("C:\\Users\\MyName\\Documents\\javaprojects\\Cardgame\\cardgameProject\\cardgameTableCanvas.jpg")); 
    frame.setSize(WIDTH,HEIGHT); 
    panel.setSize(WIDTH,HEIGHT); 
    frame.add(panel); 
    frame.setTitle("Test Canvas"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    CardgameTable sampleTable = new CardgameTable(); 
    frame.add(sampleTable); 
    frame.setVisible(true); 
} 

これは他の誰かがGitリポジトリからプルされた場合、私はまた、問題を望んでいない、と私は、そのファイルのパスがそれを行うことができると思います。

+0

画像との関連でJavaコードはどこにありますか?それらは同じディレクトリにありますか? – cosinepenguin

+0

はいそれらは同じディレクトリで、実際は同じフォルダです – Derry

+0

'JLabel panel = new JLabel(new ImageIcon(" cardgameTableCanvas.jpg "));あなたのために働かない? – cosinepenguin

答えて

1

これは実際にあなたのJavaコードがどこにあるかによって異なります。ローカルファイルパスのURLオブジェクトを作成するためのツールがいくつかあり、これらをImageIconの作成に使うことができます。

画像も、他のマシン上で参照されたJavaコードは、次のファイルを確実にするために動作するはずです、あなたと同じディレクトリ(フォルダ)内にある場合:

URL cardgameCanvas = new File("cardgameTableCanvas.jpg").toURI().toURL(); 
JLabel panel = new JLabel(new ImageIcon(cardgameCanvas)); 

For java 7+Paths.get("cardgameTableCanvas.jpg").toUri().toURL()

これは、最初にリンクするURLオブジェクトを作成し、新しいImageIconオブジェクトにpassing that URL objectを作成してイメージを参照できるようにする必要があります。

希望すると便利です。

Additional Source

編集

また、単に

JLabel panel = new JLabel(new ImageIcon("cardgameTableCanvas.jpg"));

行うことができます;)

編集2

次のようになりますあなたの主な(あなたは「苦労して」行きたいと思った場合):

public static void main(String[] args){ 
    JFrame frame = new JFrame(); 
    URL cardgameCanvas = new File("cardgameTableCanvas.jpg").toURI().toURL(); 
    JLabel panel = new JLabel(new ImageIcon(cardgameCanvas)); 
    frame.setSize(WIDTH,HEIGHT); 
    panel.setSize(WIDTH,HEIGHT); 
    frame.add(panel); 
    frame.setTitle("Test Canvas"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    CardgameTable sampleTable = new CardgameTable(); 
    frame.add(sampleTable); 
    frame.setVisible(true); 
} 

しかし、それはあなたのために働くので、私はdefinetalyちょうどこのように地元の文書自体を参照勧め:

public static void main(String[] args){ 
    JFrame frame = new JFrame(); 
    JLabel panel = new JLabel(new ImageIcon("cardgameTableCanvas.jpg")); 
    frame.setSize(WIDTH,HEIGHT); 
    panel.setSize(WIDTH,HEIGHT); 
    frame.add(panel); 
    frame.setTitle("Test Canvas"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    CardgameTable sampleTable = new CardgameTable(); 
    frame.add(sampleTable); 
    frame.setVisible(true); 
} 
+0

私はこれをどのライブラリにインポートする必要がありますか?このクラスのメインがどのように見えるかを私に見せてもらえますか?ありがとう! – Derry

+0

私は両方の可能なメインを追加しましたが、それはあなたのために働くので、 'JLabel panel = new JLabel(new ImageIcon(" cardgameTableCanvas.jpg "));'!これはもともと私が提案したものよりはるかにクリーンです! – cosinepenguin

関連する問題