Bilder gleich am Start zeichnen.

Status
Nicht offen für weitere Antworten.

simlei

Mitglied
Aloa!
Ich hab mit Netbeans folgenden Code:

Code:
    // Variablen
       Image bgpic = Toolkit.getDefaultToolkit().getImage( "bg1.png" );
       Graphics bg; 
    // Ende Variablen
    
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
        bg = jPanel2.getGraphics();
        bg.drawImage(bgpic, 0, 0, this);
    }                                        

    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainMenuFrame().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel2;
    // End of variables declaration

Ich will, wie man sieht auf ein Panel eine Grafik zeichnen. Nun klappt aber etwas nicht so ganz, da erst beim zweiten Klick auf den Button die Grafik angezeigt wird. Warum/Wie kann man das beheben?

Dann suche ich auch eine Möglichkeit diese Grafik beim Start des Programmes zu zeichnen. Ich habe versucht, den Inhalt der Buttonprozedure in die Mainprozedur zu schreiben; leider klappt das nicht (non static context referenced from static) :)

Suche also ne Lösung für das erste und zweite Problem... Danke schonmal!
 

Wildcard

Top Contributor
1. Es gibt in Java Methoden, aber keine Prozeduren
2. Graphics Objekte sollen nicht gespeichert werden
3. Du darfst nicht direkt zeichnen, sondern nur durch überschreiben von paint bzw. paintComponent
4. Niemals getGraphics auf einer Komponente aufrufen
5. Lösch alles und setz einfach ein JLabel mit ImageIcon auf deinen Container.
 

simlei

Mitglied
Entschuldigung, leider bin ich noch Anfänger und hab diese Antwort nicht ganz verstanden... Vielleicht ein wenig ausführlicher wär schon nett... Diese Stichpunkte sagen mir garnichts
 

Wildcard

Top Contributor
Essenz des ganzen:
Da ist so ziemlich alles verkehrt :wink:

Richtige Lösung:
Erstell ein JLabel mit ImageIcon
Code:
JLabel label = new JLabel(new ImageIcon("pfad/zum/bild.gif");
deinContainer.add(label);
 

Wildcard

Top Contributor
Da du oben schon Swing benutzt meinst du wohl JPanel, aber: ja, das meine ich mit Container
 

simlei

Mitglied
Code:
    // Variablen
       Image bgpic = Toolkit.getDefaultToolkit().getImage( "bg1.png" );
       Graphics bg;
       JLabel label = new JLabel(new ImageIcon("bg1.png"));
    // Ende Variablen
    
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
        jPanel2.add(label);
    }

habe das jetzt :)
Funktioniert aber nicht, wird aber auch keine Fehlermeldung ausgegeben.
 

Wildcard

Top Contributor
Im Konstruktor oder so (in jedem Fall bevor setVisible aufgerufen wird weil du sonst validate() brauchst).
Du solltest erst mal ein Tutorial machen :wink:
 

simlei

Mitglied
So... ein Mist

Code:
public static void main(String args[]) {
        JLabel label = new JLabel(new ImageIcon("bg1.png"));
        jPanel2.add(label);
        
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainMenuFrame().setVisible(true);
            }
        });
    }

hab ich geschrieben, ist also bevor setvisible...

Fehler:
Compiling 1 source file to E:\programmieren\MainMenu\build\classes
E:\programmieren\MainMenu\src\mainmenu\MainMenuFrame.java:89: non-static variable jPanel2 cannot be referenced from a static context
jPanel2.add(label);
1 error
 

Wildcard

Top Contributor
Die Fehlermeldung sagt doch eigentlich alles aus... :roll:
In main kann das nicht gehen, schreibs in den Konstruktor.
 

simlei

Mitglied
so... alles neu gemacht...

Code:
public MainMenuFrame() {
        initComponents();
        JLabel label = new JLabel(new ImageIcon("bg1.png"));
        jPanel2.add(label);
    }

das laden der grafik hat ja schon einmal mit dieser Angabe funktioniert, als in ein Image geladen wurde. Daher nehme ich an, dass die Pfadangabe aauch hier richtig ist. Trotzdem funktionierts nicht; beim Compilieren tritt aber auch kein Fehler auf...
 

simlei

Mitglied
Hier:
InitComponents ist generiert... (Netbeans)

Code:
/*
 * MainMenuFrame.java
 *
 * Created on 7. Januar 2007, 12:49
 */

package mainmenu;

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

/**
 *
 * @author  Simon
 */
public class MainMenuFrame extends javax.swing.JFrame {
    
    /** Creates new form MainMenuFrame */
    public MainMenuFrame() {
        initComponents();
        JLabel label = new JLabel(new ImageIcon("bg1.png"));
        jPanel2.add(label);
    }
    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        jPanel2 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(556, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(356, Short.MAX_VALUE)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold>                        

    
    // Variablen
    // Ende Variablen
    
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
        //bg = jPanel2.getGraphics();
        //bg.drawImage(bgpic, 0, 0, this);
    }                                        

    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {      
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainMenuFrame().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel2;
    // End of variables declaration                   
    
}
 

Wildcard

Top Contributor
Tja, bei diesem generierten Mist kann ich dir nicht helfen.
Liegt wohl am LayoutManger.
Du müsstest das JLabel auch durch den GUI Builder einfügen lassen, oder ganz auf GUI Builder verzichten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
S Aktuell beste Methode um zwei Bilder zu vergleichen..? Java Basics - Anfänger-Themen 1
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
S Bilder in .jar Datei laden Java Basics - Anfänger-Themen 10
S Bilder zoomen Java Basics - Anfänger-Themen 0
S Kann keine Bilder laden? Java Basics - Anfänger-Themen 9
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
x-tshainge Java Bilder einfügen Java Basics - Anfänger-Themen 1
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
DaCrazyJavaExpert Bilder werden nicht angezeigt! Java Basics - Anfänger-Themen 6
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
M Bilder in .Jar exportieren Java Basics - Anfänger-Themen 2
T Bilder in ausführbarer Jar Java Basics - Anfänger-Themen 11
F 2 wechselnde Bilder Java Basics - Anfänger-Themen 4
D Verzögerung des Erscheinens der Bilder Java Basics - Anfänger-Themen 5
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
F Bilder aus jar einlesen Java Basics - Anfänger-Themen 10
J Bilder in Labels aktualisieren Java Basics - Anfänger-Themen 2
T jpeg Bilder zoomen.. Java Basics - Anfänger-Themen 2
C Bilder von Festplatte in Programm hochladen Java Basics - Anfänger-Themen 6
S Wo speicher ich bilder und sounds ab? Java Basics - Anfänger-Themen 4
C Threads Threaded Bilder bearbeiten Java Basics - Anfänger-Themen 8
K Bilder mit Eclipse exportieren Java Basics - Anfänger-Themen 1
J Slideshow zeigt bilder nicht an Java Basics - Anfänger-Themen 3
R Bilder aus Array als anklickbare Objekte Java Basics - Anfänger-Themen 3
K Export nach Jar mit Bilder Java Basics - Anfänger-Themen 2
L Wie bette ich Bilder in eine .jar ein? Java Basics - Anfänger-Themen 4
C Pfad für Bilder angeben Java Basics - Anfänger-Themen 11
B Bilder laden und drauf zugreifen[Eclipse] Java Basics - Anfänger-Themen 9
E ImageJ mehrere Bilder hintereinander bearteiten Java Basics - Anfänger-Themen 2
E HILFE Projekt für die Schule--> Bilder einfügen Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
H Bilder ohne Verlust speichern Java Basics - Anfänger-Themen 2
J Ladebalken anzeigen während Bilder geladen werden Java Basics - Anfänger-Themen 2
R Bilder positionieren Java Basics - Anfänger-Themen 5
D Erstellte Jar datei zeigt keine Bilder an Java Basics - Anfänger-Themen 5
4 4kb bilder Java Basics - Anfänger-Themen 5
Q Pfadangabe für zu speichernde Bilder Java Basics - Anfänger-Themen 2
B Bilder speichern (jpg, gif, jpg) Java Basics - Anfänger-Themen 4
S Bilder einladen Java Basics - Anfänger-Themen 26
B Aus einem Eclipse Projekt eine .jar - keine Bilder drin Java Basics - Anfänger-Themen 7
H Bilder im GUI einfügen Java Basics - Anfänger-Themen 12
G Bilder in Jar anzeigen lassen Java Basics - Anfänger-Themen 23
T Bilder in der jar-datei Java Basics - Anfänger-Themen 10
H Zahlen Bilder zuordnen möglich? Java Basics - Anfänger-Themen 4
K BufferedImage, Bilder laden Java Basics - Anfänger-Themen 15
J Bilder von Objekten Java Basics - Anfänger-Themen 3
A Bilder in Eclipse speichern Java Basics - Anfänger-Themen 7
J Mit JS, Text und Bilder von Webseite verändern... Java Basics - Anfänger-Themen 10
S Input/Output Text und Bilder laden Java Basics - Anfänger-Themen 5
T Bilder werden in Jar nicht geladen Java Basics - Anfänger-Themen 10
S Java Web Start lädt keine Bilder Java Basics - Anfänger-Themen 2
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
D Bilder Laden, mit Eclipse ok, .jar nicht Java Basics - Anfänger-Themen 5
F Bilder aus .jar datei laden Java Basics - Anfänger-Themen 1
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
F Bilder enfügen und Bewegen Java Basics - Anfänger-Themen 6
I Drehbare bilder in 3D Java Basics - Anfänger-Themen 4
M Bilder laden und zeichnen Java Basics - Anfänger-Themen 3
T JTextPane - setText kein kein neuladen der Bilder? Java Basics - Anfänger-Themen 8
A Bilder in Eclipse Java Basics - Anfänger-Themen 8
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
N Bilder Objekten zuweisen Java Basics - Anfänger-Themen 2
J Bilder auf Bilder zeichnen Java Basics - Anfänger-Themen 8
N jar kann Bilder nicht finden(?) Java Basics - Anfänger-Themen 4
S Spiel automat -Bilder vergleichen Java Basics - Anfänger-Themen 3
R Gif Bilder flimmern Java Basics - Anfänger-Themen 10
P Signiertes JAR aber keine Bilder o0 Java Basics - Anfänger-Themen 6
S Bilder der Diashow werden in anderen Bildern angezeigt Java Basics - Anfänger-Themen 3
G Bilder aus dem Projekt Verzeichnis werden n. angezeigt Java Basics - Anfänger-Themen 7
C Bilder von Server zu Server kopieren über Webdav(Sardine) Java Basics - Anfänger-Themen 5
K Bilder "langsam" laden Java Basics - Anfänger-Themen 4
FreddyStepp Bilder zusammenfügen Java Basics - Anfänger-Themen 7
B GUI-Bilder einfügen Java Basics - Anfänger-Themen 40
S Bilder vergleichen Java Basics - Anfänger-Themen 6
B Kann man im Thread Bilder laden? Java Basics - Anfänger-Themen 8
S Wo speichere ich Bilder für Applets (Netbeans) Java Basics - Anfänger-Themen 5
J Mehrere Bilder laden Java Basics - Anfänger-Themen 6
D Bilder einfügen Java Basics - Anfänger-Themen 8
W Bilder einfügen? Java Basics - Anfänger-Themen 2
S Mehrere Bilder bewegen Java Basics - Anfänger-Themen 5
B Bilder zeichnen Java Basics - Anfänger-Themen 2
D Bilder in JFrame laden Java Basics - Anfänger-Themen 8
L Frage bzgl. Threads beim Bilder laden Java Basics - Anfänger-Themen 3
S Bilder in AWT Java Basics - Anfänger-Themen 7
J java applets bilder? Java Basics - Anfänger-Themen 11
manunana89 Bilder auf JFrame/beste Möglichkeit??? Java Basics - Anfänger-Themen 5
K Bilder werden nicht angeziegt !!! Java Basics - Anfänger-Themen 2
max56 Bilder ausgeben Java Basics - Anfänger-Themen 21
K Bilder/Dateien aus package einlesen Java Basics - Anfänger-Themen 14
N Bilder verkleiner ausgeben Java Basics - Anfänger-Themen 6
G Bilder und Kattegorien Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben