2016-10-21 15 views
0

最近、Javaの学習を始めました。まだ理解していないいくつかの問題や事柄にもかかわらず、本当に楽しんでいます。だから、それが私のこれまでのプログラミング言語であることを考えれば、私が作るどんな "noob"の間違いでも私を抱きしめてください。背景JFrameを使ったJavaでのウィンドウの画像

だから、私はJFrameのを使用してフルスクリーンウィンドウ作成:

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class Main extends JFrame { 

    public static void main(String[] args) { 

     //Window 
     JFrame mainWindow = new JFrame("Day One"); 
     mainWindow.setExtendedState(JFrame.MAXIMIZED_BOTH); 
     mainWindow.setUndecorated(true); 
     mainWindow.setVisible(true); 
     //End Window 

    } 

} 

をそして私はこれを追加することで、ウィンドウに背景画像を追加しようとしました:

 mainWindow.setLayout(new BorderLayout()); 
     mainWindow.setContentPane(new JLabel(new ImageIcon("C:\\Users\\Recordings\\Desktop\\Day One\\Images\\Main-Background-Image.png"))); 
     mainWindow.setLayout(new FlowLayout()); 

私はこのコードhereを見つけましたが、それは全く働いていません。このウェブサイトには2つの異なる方法がありますが、私はその両方を試してみましたが、何もしません。

私はここでもstackoverflowで同様の質問を検索しましたが、それらのすべてが返答されていないか、私と同じ例で回答されました。私は本当に私は十分に明らかにされている願っています

は、お時間をどうもありがとうございました

EDIT:三つに

  mainWindow.setContentPane(new JLabel(new ImageIcon("C:\\Users\\Recordings\\Desktop\\Day One\\Images\\Main-Background-Image.png"))); 

:示唆したように

が、私は長い間、単一の文を分離していますより簡単にデバッグされたステートメント:

 ImageIcon image = new ImageIcon("C:\\Users\\Recordings\\Desktop\\Day One\\Images\\Main-Background-Image.png"); 
     JLabel label = new JLabel(image); 
     mainWindow.setContentPane(label); 
+0

は、単一のステートメントですべてのあなたのコードを記述しようとしないでください役立ちます。そうしたときにデバッグを行うことはできません。代わりにJLabelを別のステートメントとして作成し、このラベル変数を使用してsetContentPane(...)を呼び出すことができます。これを行う理由は、まずlabel.setText(...)を呼び出すだけでコードをテストすることになります。それが動作したら、label.setIcon()を使ってみてください。それが動作しない場合、問題はあなたのアイコンの読書であることを知っている。次に、問題が何であるかを明確かつ簡潔に質問できます。あまりにも基本的なデバッグ! – camickr

+0

あなたの答えをありがとう!申し訳ありませんが、私の質問が簡潔かつ十分明確でない場合は、私が感謝するあなたの提案に基づいて将来の質問を改善しようとします!あなたが私に言ったことをやったことがありました。私は長い文を3つのものに分けましたので、デバッグは簡単です。残念ながら、それはまだ動作していません。トピックの最後に追加しました。もう一度お時間をいただきありがとうございます:) – Syvered

+0

'残念ながらまだ動作していません。 - まだ動作していません。問題の説明ではありません。コードのデバッグに関する私のコメントの最初の部分が欠落しています。 1)テキスト付きのラベルを表示したばかりだったのですか?あなたはアイコンをうまく読みましたか?アイコンに有効なサイズがありますか? – camickr

答えて

1

ほんの少しのヒント

  • 通常、フレーム内にパンフェルを入れてからコンポーネントを追加するのがベストです。スイングクラスが少し大きくなると、良い封じ込めになります。
  • プロジェクト用のリソースフォルダを作成する方が優れています。プロジェクトのソースに1つ作成します。プロジェクトのsrcフォルダとbinフォルダがあり、 "resources"という名前を付けてください。
  • 画像アイコンを作成するときには、適切なエラーを出したり、簡単に見つけたり、実行時にエラーを処理したりできるように、try catchで囲むことをお勧めします。

すべてのことが言われていますが、ここで少し余分なあなたのコードです。 jlabel(画像)を保持するパネルを作成し、そのパネルをフレームに追加します。クイックメソッドでイメージアイコンを作成します。ファイル名を渡すだけです。この方法では、プロジェクトディレクトリにresourcesというフォルダーを作成し、そこにイメージを配置したことを前提としています。

public static void main(String[] args) { 
    //Window 
    JFrame mainWindow = new JFrame("Day One"); 
    mainWindow.setExtendedState(JFrame.MAXIMIZED_BOTH); 
    mainWindow.setUndecorated(true); 

    //Create image 
    JLabel imageHolder = new JLabel(); 
    imageHolder.setIcon(makeImageIcon("example.png")); 

    //Add image to panel, add panel to frame 
    JPanel panel = new JPanel(); 
    panel.add(imageHolder); 

    mainWindow.add(panel); 

    mainWindow.setVisible(true); 
} 

//Creates imageicont from filename 
public static ImageIcon makeImageIcon(String filename) { 
    BufferedImage myPicture = null; 
    try { 
     myPicture = ImageIO.read(new File("resources/" + filename)); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return new ImageIcon(myPicture); 
} 

ホープこれは