2016-08-04 34 views
-1

Das ist so frustriert. Der Code funktioniert nur bei manuell generierten, funktioniert aber nicht in auto generate ??? Es gibt ein Bild im Projekt "Bird.png".Nicht funktionieren in automatisch generiert aber funktionieren wenn ich manuell codiere?

public ComboBox() { 
    initComponents(); 
    try { 
     image = ImageIO.read(new File("Bird.png")); 
     lblShow = new JLabel(new ImageIcon(image.getScaledInstance(300, 300, Image.SCALE_SMOOTH))); 
    } catch (Exception e) { 
    } 
} 

Das ist mein manuelle Code generieren:

public MainFrame(){ 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setSize(600,400); 
    //create new panel and add panel to frame 
    JPanel pnlImg=new JPanel(); 
    add(pnlImg); 
    //create new label for showing image 
    JLabel lblShowImg; 

    BufferedImage image = null; 
    try { 
     image = ImageIO.read(new File("1.jpg")); 
    } catch (IOException ex) { 
     Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    ImageIcon ii=new ImageIcon(image.getScaledInstance(300,300,Image.SCALE_SMOOTH)); 
    lblShowImg=new JLabel(ii); 


    /*add label to panel */ 
    pnlImg.add(lblShowImg); 

    /* show frame*/ 
    setVisible(true); 
} 
+0

@ 91378246: Auto bedeutet, dass Sie neue JFrame Form in Netbeans erstellen. Manuell bedeutet, dass Sie es normal schreiben. –

+1

'aber nicht funktionieren' Können Sie definieren, was Sie mit 'nicht arbeiten' meinen? – copeg

+0

@copeg das Etikett zeigt nichts. –

Antwort

1

Warum ist das nicht?

public ComboBox() { 
    initComponents(); 
    try { 
     image = ImageIO.read(new File("Bird.png")); 
     lblShow = new JLabel(new ImageIcon(image.getScaledInstance(300, 300, Image.SCALE_SMOOTH))); 
    } catch (Exception e) { 
    } 
} 

wahrscheinlich aufgrund Ihrer nicht Layout-Manager zu berücksichtigen, aber die Wahrheit ist, geschrieben, wie es unmöglich ist, zu sagen,

  • Sie nie zeigen, wo Sie die JLabel einem Container hinzufügen
  • Sie geben nicht an, welchen Layout-Manager der Container verwendet
  • Sie haben keinen gültigen mcve-Wert angegeben.

Um möglicherweise dieses Problem lösen -

  • erlauben NetBeans ein JPanel
  • Fügen Sie Ihre JLabel Ihren eigenen JPanel, eine, deren Layout Sie steuern, zu erzeugen.
  • Fügen Sie beide zu einem JFrame hinzu (in Bezug auf das Layout von contentPane), das Sie anzeigen.