Probleme beim Hinzufügen von Objekten zu getContentPane()

Status
Nicht offen für weitere Antworten.

minos5000

Aktives Mitglied
Ich versuche jetzt schon eine ganze Weile zu einem JFrame ein JPanel mit einem Bild hinzuzufügen, was auch einmal kurzfristig funktioniert hat, aber nicht so wie ich es mir vorstelle, weshalb ich es wieder geändert habe. Aber nun wird das Bild nicht mehr angezeigt und ich kann die Ursache dafür einfach nicht finden.

Im folgenden erst einmal der Code. Ich verwende zum entwickeln NetBeans der den Code für die Gui selbst erzeugt, deshalb nicht über den etwas seltsamen Stil wundern.

Code:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.awt.Container;
import javax.imageio.*;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Gui_1 extends javax.swing.JFrame {
    
    private String selectedFile;
    private Image background;
    private Graphics g;
    private BufferedImage image;
    private ImageComponent_1 imageComponent;
    private Component[] component;
    
    
    public Gui_1() {
        initComponents();
    }

    // <editor-fold defaultstate="collapsed" desc=" Erzeugter Quelltext ">                          
    private void initComponents() {
        jFileChooser1 = new javax.swing.JFileChooser();
        jButton1 = new javax.swing.JButton();
        mainMenu = new javax.swing.JMenuBar();
        fileMenu = new javax.swing.JMenu();
        openMenuItem = new javax.swing.JMenuItem();

        getContentPane().setLayout(null);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);


        fileMenu.setText("File");
        openMenuItem.setText("Open");
        openMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                openMenuItemActionPerformed(evt);
            }
        });

        fileMenu.add(openMenuItem);

        mainMenu.add(fileMenu);

        setJMenuBar(mainMenu);

        pack();
    }// </editor-fold>                        

    private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {                                             
        FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
        jFileChooser1.setFileFilter(filter);
        int returnVal = jFileChooser1.showOpenDialog(Gui_1.this);
        if(returnVal == jFileChooser1.APPROVE_OPTION) {
            selectedFile = jFileChooser1.getSelectedFile().getPath();
        }
        File imageFile = new File(selectedFile);
        try {
            image = ImageIO.read(new File(selectedFile));
            imageComponent = new ImageComponent_1(image);
        } catch(IOException e) {
            System.out.println(e.toString());
        }
        showPicture(imageComponent);
    }                                            

    private void showPicture(ImageComponent_1 imageComp) {
        getContentPane().add(imageComp);
        component = getContentPane().getComponents();
        System.out.println(component[0].getName());
        pack();
        validate();
    }

    
    // Variablendeklaration - nicht modifizieren                     
    private javax.swing.JMenu fileMenu;
    private javax.swing.JButton jButton1;
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JMenuBar mainMenu;
    private javax.swing.JMenuItem openMenuItem;
    // Ende der Variablendeklaration                   
    
}


Code:
import java.awt.*;
import javax.swing.JPanel;

public class ImageComponent_1 extends JPanel {
    
    private Image image;
    
    public ImageComponent_1(Image image) {
        this.image = image;
    }
    
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(image.getWidth(null), image.getHeight(null));
    } 
    
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image,0,0,this);
    }    
}

Aufgerufen wird der Frame über:

Code:
public class Main {
    
    private static Gui_1 g = new Gui_1();
    
    public Main() {
    }

    public static void main(String[] args) {
        g.setVisible(true);
        g.setSize(640,480);
        g.setLocation(20,20);
    }
    
}

Mittels showPicture() versuche ich das Bild zum Frame hinzuzufügen, was aber wie gesagt nicht klappt. Dann habe ich zur Überprüfung einfach mal System.out.println(component[0].getName()); eingebaut, was eigentlich den Namen der Komponenten "imageComp" zurückliefern sollte, aber zu meiner Verwunderung kam als Ausgabe schlicht "null". Die Komponente scheint also gar nicht hinzugefügt worden zu sein.

Ich hab in letzter Zeit viel ausprobiert und zig Beispiele gelesen, wie man Bilder mit Java anzeigen kann, aber eine Erklärung warum es bei mir nicht geht kann ich einfach nicht finden.


Schon mal vielen Dank für jede Hilfe.
 
S

SlaterB

Gast
> was eigentlich den Namen der Komponenten "imageComp" zurückliefern sollte

warum zum Himmel sollte das passieren? hast du irgendwo den Namen gesetzt?

Code:
    public ImageComponent_1(Image image)
    {
        this.image = image;
        setName("name");
    }

verlässlicher ist vielleicht eh:
System.out.println("imageComp : "+imageComp.hashCode());
System.out.println("component[0]: "+component[0].hashCode());

damit findest du auch immer Fehler die dadurch entstehen, dass du mehrere Komponenten (z.B. gleichen Namens) erstellst


hätte das einfügen nicht geklappt, wäre übrigens component[0] selber null -> NullPointerException,
also ist der ganze Test so wie er da steht etwas seltsam


-----------

Fehler hier scheint
getContentPane().setLayout(null);
zu sein,
wirf dann raus, dann gehts hoffentlich
 

minos5000

Aktives Mitglied
SlaterB hat gesagt.:
> was eigentlich den Namen der Komponenten "imageComp" zurückliefern sollte

warum zum Himmel sollte das passieren? hast du irgendwo den Namen gesetzt?
Ich dachte er spuckt mir dann einfach den Namen den Namen aus, unter dem ich das Objekt angelegt habe.


SlaterB hat gesagt.:
Fehler hier scheint
getContentPane().setLayout(null);
zu sein,
wirf dann raus, dann gehts hoffentlich

Danke für den Tipp, das gung ja ruck-zuck :D. Das blöde bei NetBeans ist, daß man immer ein Layout setzen MUSS. Ist ein Layout vorhanden scheint aber der Befehl
Code:
getContentPane().add(...)
nicht mehr wie gewohnt zu funktionieren, da man nur noch Objekte gemäß dem gewählten Layout hinzufügen kann. Was bei dem Standardlayout von NetBeans (GroupLayout) nicht möglich zu sein scheint.

Ich hatte gehofft, durch setzen eines Null-Layouts den Effekt zu erreichen, daß getContentPane().add() wieder funktioniert, was aber wie zu sehen war, leider nicht ging.

Um deinen Tipp umzusetzen hab ich den gesamten Code in einen Editor kopiert, setLayout(null) auskommentiert und beim anschließenden Test wurde auch prompt ein Bild angezeigt.


Jetzt werde ich erstmal versuchen mich irgendwie mit dem Layoutverhalten von NetBeans zu arrangieren, um die gewünschten Ergebnisse zu erzielen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
K JList-Probleme beim Hinzufügen von Elementen AWT, Swing, JavaFX & SWT 3
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
C SWT probleme beim einbinden von Images AWT, Swing, JavaFX & SWT 2
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
N Probleme beim positionieren von Elementen AWT, Swing, JavaFX & SWT 2
A Probleme beim FocusListener AWT, Swing, JavaFX & SWT 6
L Probleme beim Refresh von JTable AWT, Swing, JavaFX & SWT 7
S Swing Probleme beim Aktualisieren einer JComboBox nach Auswahländerung AWT, Swing, JavaFX & SWT 2
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
R Probleme beim Zeichnen eines Koordinatensystems AWT, Swing, JavaFX & SWT 10
M Probleme beim Bild einfügen in CenterPanel AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
S Probleme beim Neuzeichnen eines JLabels AWT, Swing, JavaFX & SWT 6
W Probleme beim Erstellen einer Tabelle AWT, Swing, JavaFX & SWT 2
T Probleme beim Resizen einer JScrollPane AWT, Swing, JavaFX & SWT 2
G Probleme beim Panelstruktur AWT, Swing, JavaFX & SWT 13
E Probleme beim Layout! AWT, Swing, JavaFX & SWT 8
E Probleme beim Layout mit Buttons und CheckboxGroup AWT, Swing, JavaFX & SWT 9
S Probleme beim Laden und Speichern von Dateien AWT, Swing, JavaFX & SWT 6
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
C Probleme beim ausführen von Programmen mit Fenstern+Inhalt AWT, Swing, JavaFX & SWT 3
Q JTextPane / Probleme beim Einfügen von <br>-Tags AWT, Swing, JavaFX & SWT 2
G Probleme beim Lösen einer Übungsaufgabe AWT, Swing, JavaFX & SWT 5
C Probleme beim 2. öffnen eines Fensters AWT, Swing, JavaFX & SWT 5
A Probleme beim Ausdrucken AWT, Swing, JavaFX & SWT 4
V Probleme beim Scrollen ein JPanels mit JScrollPane AWT, Swing, JavaFX & SWT 2
R Probleme beim Wiederherstellen eines JInternalFrames AWT, Swing, JavaFX & SWT 4
G Probleme beim Füllen einer JTable AWT, Swing, JavaFX & SWT 2
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben