2016-12-14 12 views
-1

JFrameのBakgroundとして画像を追加する方法を探しました。 私はいくつかの問題を見つけていくつかの解決策を試しましたが、画像が表示されず何が間違っているのか分かりません(私はnoob btw xdです) 私は他の質問を見ましたが、私は本当に頑張ったが、私のせいを見つけられなかった!だから(私の投稿に重複している人をマークした人)JFrame背景画像が機能しない

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 


public class prognose extends Frame { 
    // Anfang Attribute 
    private JTextField spendenbetrag = new JTextField(); 
    private JTextField streamzeit = new JTextField(); 
    private JLabel sBetragL = new JLabel(); 
    private JLabel sZeitL = new JLabel(); 
    private JButton prognosebutton = new JButton(); 
    private ImageIcon prognosebuttonIcon = new ImageIcon("C:\\Users\\user\\Documents\\Programmieren\\Workspace\\images\\Button.png"); 
    private JTextField ergebnis = new JTextField(); 
    // Ende Attribute 

    public prognose() { 
    // Frame-Initialisierung 
    super(); 
    addWindowListener(new WindowAdapter() { 
     public void windowClosing(WindowEvent evt) { dispose(); } 
    }); 
    int frameWidth = 455; 
    int frameHeight = 580; 
    setSize(frameWidth, frameHeight); 
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
    int x = (d.width - getSize().width)/2; 
    int y = (d.height - getSize().height)/2; 
    setLocation(x, y); 
    setTitle("Loot für die Welt"); 
    setResizable(false); 
    Panel cp = new Panel(null); 
    add(cp); 

    // Anfang Komponenten 

    spendenbetrag.setText(""); 
    cp.add(spendenbetrag); 
    streamzeit.setText(""); 
    cp.add(streamzeit); 
    sBetragL.setText("Aktueller Spendenbetrag"); 
    cp.add(sBetragL); 
    streamzeit.setBounds(152, 184, 145, 25); 
    spendenbetrag.setBounds(152, 112, 145, 25); 
    sBetragL.setBounds(152, 80, 145, 25); 
    sZeitL.setBounds(152, 152, 155, 25); 
    sZeitL.setText("Aktuelle Streamzeit"); 
    cp.add(sZeitL); 
    prognosebutton.setBounds(184, 224, 80, 280); 
    prognosebutton.setText(""); 
    prognosebutton.setMargin(new Insets(2, 2, 2, 2)); 
    prognosebutton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
     prognosebutton_ActionPerformed(evt); 
     } 
    }); 
    prognosebutton.setIcon(prognosebuttonIcon); 
    prognosebutton.setBorderPainted(false); 
    prognosebutton.setBackground(Color.WHITE); 
    prognosebutton.setBorder(BorderFactory.createEtchedBorder(0, Color.DARK_GRAY, new Color(0xC0C0C0))); 
    prognosebutton.setIconTextGap(0); 
    cp.setBackground(Color.WHITE); 
    setUndecorated(false); 
    cp.add(prognosebutton); 
    ergebnis.setBounds(152, 512, 145, 25); 
    ergebnis.setText(""); 
    ergebnis.setEditable(false); 
    cp.add(ergebnis); 
    // Ende Komponenten 

    setVisible(true); 
    setLayout(new BorderLayout()); 
    setSize(455,580); 
    setVisible(true); 
    JLabel background=new JLabel(new ImageIcon("C:\\Users\\user\\Documents\\Programmieren\\Workspace\\images\\Background.png")); 

    add(background); 

    background.setLayout(new FlowLayout()); 


    } // end of public prognose 

    // Anfang Methoden 

    public static void main(String[] args) { 
    new prognose(); 
    } // end of main 

    public void prognosebutton_ActionPerformed(ActionEvent evt) { 
    // TODO hier Quelltext einfügen 
    String a; 
    String b; 
    a = spendenbetrag.getText(); 
    b = streamzeit.getText(); 
    double d; 
    double e = Double.parseDouble(a); 
    double f = Double.parseDouble(b); 
    d = e*(60/f)*48; 
    d = ((double)((int)(d*100)))/100; 
    String g = String.valueOf(d); 
    ergebnis.setText(g); 
    } // end of prognosebutton_ActionPerformed 

    // Ende Methoden 
} // end of class prognose 
+1

http://stackoverflow.com/questions/18777893/jframe-background-image –

+0

いや、それはないように思え、私は1つを見てきましたし、私は両方の方法を試してみたが、それらのどちらも – Veronique

答えて

0

JFrame代わりにFrameを拡張backroundのを設定するsetComponentPaneを使用し、コードの先頭に、バックグラウンドラベルの宣言を移動します。すべてのコンポーネントをそのラベルに追加します。

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 


public class prognose extends JFrame { 
    // Anfang Attribute 
    private JTextField spendenbetrag = new JTextField(); 
    private JTextField streamzeit = new JTextField(); 
    private JLabel sBetragL = new JLabel(); 
    private JLabel sZeitL = new JLabel(); 
    private JButton prognosebutton = new JButton(); 
    private ImageIcon prognosebuttonIcon = new ImageIcon("C:\\test\\rak.png"); 
    private JTextField ergebnis = new JTextField(); 
    // Ende Attribute 

    public prognose() { 
    // Frame-Initialisierung 
    super(); 
    addWindowListener(new WindowAdapter() { 
     public void windowClosing(WindowEvent evt) { dispose(); } 
    }); 
    int frameWidth = 455; 
    int frameHeight = 580; 
    setSize(frameWidth, frameHeight); 
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
    int x = (d.width - getSize().width)/2; 
    int y = (d.height - getSize().height)/2; 
    setLocation(x, y); 
    setTitle("Loot für die Welt"); 
    setResizable(false); 
    JLabel background=new JLabel(new ImageIcon("C:\\test\\rak.png")); 

    setContentPane(background); 
    background.setLayout(new FlowLayout()); 
    Panel cp = new Panel(null); 
    background.add(cp); 

    // Anfang Komponenten 

    spendenbetrag.setText(""); 
    background.add(spendenbetrag); 
    streamzeit.setText(""); 
    background.add(streamzeit); 
    sBetragL.setText("Aktueller Spendenbetrag"); 
    background.add(sBetragL); 
    streamzeit.setBounds(152, 184, 145, 25); 
    spendenbetrag.setBounds(152, 112, 145, 25); 
    sBetragL.setBounds(152, 80, 145, 25); 
    sZeitL.setBounds(152, 152, 155, 25); 
    sZeitL.setText("Aktuelle Streamzeit"); 
    background.add(sZeitL); 
    prognosebutton.setBounds(184, 224, 80, 280); 
    prognosebutton.setText(""); 
    prognosebutton.setMargin(new Insets(2, 2, 2, 2)); 
    prognosebutton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
     prognosebutton_ActionPerformed(evt); 
     } 
    }); 
    prognosebutton.setIcon(prognosebuttonIcon); 
    prognosebutton.setBorderPainted(false); 
    prognosebutton.setBackground(Color.WHITE); 
    prognosebutton.setBorder(BorderFactory.createEtchedBorder(0, Color.DARK_GRAY, new Color(0xC0C0C0))); 
    prognosebutton.setIconTextGap(0); 
    background.setBackground(Color.WHITE); 
    setUndecorated(false); 
    background.add(prognosebutton); 
    ergebnis.setBounds(152, 512, 145, 25); 
    ergebnis.setText(""); 
    ergebnis.setEditable(false); 
    background.add(ergebnis); 
    // Ende Komponenten 

    setVisible(true); 
    setLayout(new BorderLayout()); 
    setSize(455,580); 
    setVisible(true); 




    } // end of public prognose 

    // Anfang Methoden 

    public static void main(String[] args) { 
    new prognose(); 
    } // end of main 

    public void prognosebutton_ActionPerformed(ActionEvent evt) { 
    // TODO hier Quelltext einfügen 
    String a; 
    String b; 
    a = spendenbetrag.getText(); 
    b = streamzeit.getText(); 
    double d; 
    double e = Double.parseDouble(a); 
    double f = Double.parseDouble(b); 
    d = e*(60/f)*48; 
    d = ((double)((int)(d*100)))/100; 
    String g = String.valueOf(d); 
    ergebnis.setText(g); 
    } // end of prognosebutton_ActionPerformed 

    // Ende Methoden 
} // end of class prognose 
+0

を働きました*スレッド内の例外java.lang.Error:未解決のコンパイルの問題: \t予期しているタイプの予告タイプ \tのメソッドsetComponentPane(JLabel)は未定義です。 (prognose.java:36) \t prognose.main(prognose.java:95)* – Veronique

+0

フレームをJFrameに変更しました –

+0

はい、私には:// – Veronique

関連する問題