Hintergrundbild

Also ich habe hier diesen Code in Java Editor zusammengestellt

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

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 05.11.2014
  * @author 
  */

public class Test extends JFrame {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  // Ende Attribute
  
  public Test(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 300; 
    int frameHeight = 154;
    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);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    jLabel1.setBounds(8, 8, 83, 25);
    jLabel1.setText("Hier eingeben:");
    cp.add(jLabel1);
    jTextField1.setBounds(96, 8, 177, 25);
    cp.add(jTextField1);
    jLabel2.setBounds(96, 40, 179, 25);
    jLabel2.setText("");
    cp.add(jLabel2);
    jLabel3.setBounds(8, 40, 83, 25);
    jLabel3.setText("Hier ausgabe:");
    cp.add(jLabel3);
    jButton1.setBounds(208, 80, 65, 25);
    jButton1.setText("Reset");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jButton2.setBounds(104, 80, 65, 25);
    jButton2.setText("Kopieren");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public Test
  
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    jTextField1.setText("");
    jLabel2.setText("");// TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed

  public void jButton2_ActionPerformed(ActionEvent evt) {
    jLabel2.setText(jTextField1.getText());// TODO hier Quelltext einfügen
  } // end of jButton2_ActionPerformed

  // Ende Methoden
  
  public static void main(String[] args) {
    new Test("Test");
  } // end of main
  
} // end of class Test

wie füge ich da jetzt noch ein Hintergrundbild ein bin ziemlich neu habe im Internet was gefunden aber wo ich das einfügen muss verstehe ich nicht

Das einfachste wäre wohl folgendes:
Du erstellst dir eine Klasse die von JPanel erbst. Dessen paintComponent() Methode überschreibst du und malst dort dein Hintergrundbild. Dieses neue JPanel setzt du dann als ContentPane in dein JFrame. Damit liegen dann all deine Komponenten auf dem von dir gezeichneten Bild.

  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  // Ende Attribute
  
  public Test(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 300; 
    int frameHeight = 154;
    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);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    jLabel1.setBounds(8, 8, 83, 25);
    jLabel1.setText("Hier eingeben:");
    cp.add(jLabel1);
    jTextField1.setBounds(96, 8, 177, 25);
    cp.add(jTextField1);
    jLabel2.setBounds(96, 40, 179, 25);
    jLabel2.setText("");
    cp.add(jLabel2);
    jLabel3.setBounds(8, 40, 83, 25);
    jLabel3.setText("Hier ausgabe:");
    cp.add(jLabel3);
    jButton1.setBounds(208, 80, 65, 25);
    jButton1.setText("Reset");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jButton2.setBounds(104, 80, 65, 25);
    jButton2.setText("Kopieren");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public Test
  
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    jTextField1.setText("");
    jLabel2.setText("");// TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed

  public void jButton2_ActionPerformed(ActionEvent evt) {
    jLabel2.setText(jTextField1.getText());// TODO hier Quelltext einfügen
  } // end of jButton2_ActionPerformed

  // Ende Methoden
  
  public static void main(String[] args) {
    new Test("Test");
  } // end of main
  
} // end of class Test```

Also, es wird von JFrame geerbt und null-Layout und Änderung jtf1 in jl2 angezeigt ohne EDT-invoke. Alle 3 vermeiden.

Wegen des Hintergrunds, zB, wie angemerkt, mit Graphics zeichnen, oder `new JLabel(new ImageIcon(bufferedImage));`. Grüße.

Edit: Das Forum ruckelt gerade etwas.

Eine neue Klasse erstellen ok… aber was ist denn paintComponent() :confused: und wie überschreibe ich die und wie füge ich das dann noch ein meinen code ein? und an welcher stelle

[gepostet in neuen zweiten Thema, nun wieder hierher geschoben]

verwende ruhig JAVA-Tags statt CODE-Tags,

auf deinen alten gleichen Thread
http://forum.byte-welt.net/threads/13277-Hintergrundbild
kannst du doch wohl verweisen, wenn du einen neuen aufmachst…,
damit man weiß was schon geantwortet wurde, oder auch dort einen Hinweis reinschreiben wenn es hier weitergeht

mehr passend zum alten Thread:
Richtung überschreiben:
man kann auch ‚paintComponent überschreiben‘ in eine Suchmaschine eintippen,
das ist nun bereits die Ebene eines allgemeinen wohlbekannten Konzeptes in Java

findet praktischerweise als ersten Link etwas aus dem Wiki zu diesem Forum hier :wink:
http://wiki.byte-welt.net/wiki/Malen_in_Swing_Teil_1:_der_grundlegende_Mechanismus

da gibts ein BullsEyePanel, darin malen, Striche statt Bild zum Üben für den Anfang auch besser, keine Probleme wie Bild an falscher Stelle auf Festplatte,
PreferredSize ist wahrscheinlich nicht zu beachten für ContentPane


ne andere Suche wäre noch ‚setcontentpane background image‘

mit

gui.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg"))))); [ging nicht]

Reasonable approach, but the problem is that by default a JLabel doesn’t use a layout manager to you can’t easily add components to it. Try:

JLabel background = new JLabel(…);
background.setLayout( new BorderLayout() );
gui.setContentPane( background );


[quote=Javaneuling]Bitte um genaue Erklärung da ich noch ein Neuling bin…
wenn ich z.B eine neue Klasse erstellen muss wie binde ich die dann darin ein etc. bitte seeeeeehr genau :3 (oder andeuten)[/quote]

wie du Klassen erstellst solltest du in Java-Tutorials üben, das fängt an mit Wahl einer IDE oder Editor für Textdatein, Projekte, packages usw.,
Kompilieren, Ausführen, wobei du mindestens letzteres wohl doch schon kannst,
passt hier nicht rein, übe mit zwei Dummy-Klassen, die „A“ und „B“ ausgeben

und bevor du jetzt erstmalig ein Bild als Hindergrund setzt, versuche erstmal es mit File zu finden, normal in GUI einzufügen usw.,
ok, das sind wohl alles Bahnhof-Schritte, naja…

Vielleicht noch 2 Sachen aus unserem Wiki zum Lesen für dich:

[ul]
[li]Warum man nicht von JFrame/JDialog erben sollte[/li][li]Grafikdateien laden und anzeigen[/li][/ul]

*** Edit ***

Wenn du das durch hast, sollte auch das Einfügen eines Hintergrundbildes kein großes Problem mehr für dich sein.