[Hilfe] Images in GUI einbinden?

Anleitungen, Beispiele und Hilfestellungen zu NetBeans

Moderator: wegus

Antworten
Sharedox
Beiträge: 8
Registriert: 27.05.2013, 18:02

[Hilfe] Images in GUI einbinden?

Beitrag von Sharedox » 27.05.2013, 18:10

Hallo Forum,

ich bin noch ein totaler Anfänger was Netbeans angeht, also seit nicht zu streng mit mir, die SuFu hab ich schon benutzt, aber leider nichts gefunden.
Also nun mal zu meiner Frage:
Ich hätte gerne, dass in meiner GUI, wenn sich im Textfeld z.B. eine "1" befindet, ein an diesen Wert gebundenes Bild erscheint, nur wie mache ich dies?
Würde mich wirklich sehr über Hilfe freuen :)

lg

Benutzeravatar
nigjo
Beiträge: 607
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: [Hilfe] Images in GUI einbinden?

Beitrag von nigjo » 27.05.2013, 18:28

Hi

Ziemlich knappe Anfrage. (wenn das mal keine Hausaufgabe ist)

Muss es ein Textfeld sein? Und warum die Bilder per Nummer auswählen? Wenn es egal ist, welche Eingabevariante benutzt werden soll, würde ich eine JCheckbox verwenden. Dort bekommst du per ActionListener viel einfacher die "Veränderung" durch den Benutzer mit und kannst ein anderes Bild anzeigen.

Für weitere Hilfe bräuchte ich eine etwas konkretere Problembeschreibung.

Gruß
Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

Sharedox
Beiträge: 8
Registriert: 27.05.2013, 18:02

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Sharedox » 27.05.2013, 18:56

Vielen Dank schonmal für die Antwort!
Nein - kein Sogre, es ist keine Hausaufgabe oder desweiteren, ich beschäftige mich rein Privat damit, deshalb habe ich auch keinen anderen Ansprechpartner als das Netz :/
Ich habe einen Zahlengenerator erstellt und möchte je nach dem welcher Wert dabei raus kommt ein Bild dran heften, muss jetzt nicht umbeding ein Textfeld sein, das Bild sollte nur passend zu dem generierten Wert ausgegeben werden (wenn möglich irgendwo in der GUI) .

Könntest du mir zu deiner Variante evtl ein Beispiel schreiben, das ich mir eine Vorstellung dazu machen kann (wie gesagt, kaum Erfahrung mit Netbeans).

Benutzeravatar
Tux1000
Beiträge: 264
Registriert: 05.04.2008, 16:09

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Tux1000 » 27.05.2013, 21:28

Ich würde einfach neben deinem TextField ein JLabel platzieren und mit dessen setIcon Methode das gewünschte Icon anzeigen.
Die Änderungen am TextField könnte man mit textField.getDocument().addDocumentListener( documentListener ) feststellen und entsprechend der Inhalte das Icon setzen.

VG

Sharedox
Beiträge: 8
Registriert: 27.05.2013, 18:02

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Sharedox » 29.05.2013, 15:47

Code: Alles auswählen

 private void w1ActionPerformed(java.awt.event.ActionEvent evt) {                                   

       
              int n = (int) (Math.random()*6 + 1);
               t1.setText(n +"");
               
               int k = (int) (Math.random()*6 + 1);
               t2.setText(k +"");
Hier habe ich zwei "Würfel", t1 und t2 sind jeweils die Variablen für ein Textfeld.
Mit welcher Funktion kann ich in dem nebenstehenden jLabel das Bild ändern, passend zum generierten Wert?
z.B.:

Code: Alles auswählen

 if ( n = 1) { // Benutze Bild w1.png }

Benutzeravatar
Olek77
Beiträge: 669
Registriert: 21.03.2009, 13:09

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Olek77 » 30.05.2013, 11:32

Hi,

Um "Ganz einfach" ein Bild zu laden kannst du folgende Klasse nutzen :

Code: Alles auswählen

javax.imageio.ImageIO
Diese bietet diverse Lesemethoden für

Code: Alles auswählen

java.awt.BufferedImage
an.
dies ist das bevorzugte Bild-Format für performanten Zugriff.
Nun musst du noch das ganze einem

Code: Alles auswählen

javax.swing.ImageIcon
übergeben und dieses kannst du dann als icon für dein Label setzen.
z.B.

Code: Alles auswählen

private void setImage( final double randomNumber )  {
    // hier die Abfrage welches Bild bei welcher Zahl 
    // ...
    // dann das lesen des Bildes    
try { 
      // diese Methode wirft eine IOException
      BufferedImage image = ImageIO.read( new File( "Pfad zum Bild hier" )  );
      ImageIcon icon = new ImageIcon( image );
      //  noch simpler wäre : icon = new ImageIcon( "Pfad zu dem Bild" ); 
      //  schau doch mal ob da auch ne Fehlermeldung erscheint, wenn der Pfad nicht stimmt
      
      // deinem label das icon setzen
      label.setIcon( icon );
   } catch ( final IOException ioE ) { label.setIcon( null ) }
}
Dieser code ist wenig objektorientiert und sehr roh ...
Nur als kleiner Hinweis gedacht.

Grüße,

Olek
Zuletzt geändert von Olek77 am 30.05.2013, 18:30, insgesamt 1-mal geändert.
- Netbeans Certified Associate -

Sharedox
Beiträge: 8
Registriert: 27.05.2013, 18:02

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Sharedox » 30.05.2013, 17:29

Danke Olek für deine Mühe, aber mein Netbeans kann leider nichts mit

Code: Alles auswählen

 java.awt.BufferedImage 
anfangen , was mir auch bei der try funktion ärger macht...
Ich hab jetzt versucht mit

Code: Alles auswählen

private static Icon[] bilder = {new ImageIcon("bilder/w1.png")};
das Bild aufzurufen und dann mit

Code: Alles auswählen

        
       int n = (int) (Math.random()*6 + 1);
               e1.setText(n +"");
               
if ( e1.getText() == "1") {
    
        label.setIcon( icon );
    }
das Icon zu ändern, bin aber noch nicht ganz dahinter gekommen, was genau ich anstelle des "Icon" in die Klammer setzen müsste. (Das ganze soll in meinem Button geschehen)
Zuletzt geändert von Sharedox am 30.05.2013, 19:28, insgesamt 1-mal geändert.

Benutzeravatar
Olek77
Beiträge: 669
Registriert: 21.03.2009, 13:09

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Olek77 » 30.05.2013, 18:24

Hi,

Sorry wegen BufferedImage.
Das passiert wenn man die Javadoc nicht liest.
Ich hatte angenommen es liegt gleich unter java.awt. aber es
ist unter

Code: Alles auswählen

java.awt.image.BufferedImage
zu finden.
wenn du nur BufferedImage geschrieben hättest,
hätte dir Netbeans einen Hinweis gegeben ob es sich
um das oben genannte handelt ( links wo die Zeilennummern stehen ).

Der code

Code: Alles auswählen

private static Icon[] bilder = {new ImageIcon("bilder/w1.png")};
ist nicht gerade "der normale Weg", aber würde funktionieren, wenn
das Bild unter deinem Arbeitsverzeichnis im Ordner bilder liegt.

Wenn du den code zu setzen des Icon so lassen willst
musst du

Code: Alles auswählen

label.setIcon( bilder[0] ); // Zugriff auf das array vom Typ Icon an Stelle 0 ( die Indizierung beginnt bei 0 )
schreiben.

Das wird allerdings nur gehen, wenn das Bild auch dort liegt und gelesen werden kann.
Wenn du Probleme mit den Begriffen Array/Typ/Indizierung etc. hast würde ich dir empfehlen
ein Buch wie "Java ist auch eine ..." ( google mal , sonst wird das wieder Werbung hier )
zu leihen oder zu besser zu kaufen.

Dort steht viel drin und in einem Stil, den Anfänger gut verstehen( jedenfalls gings mir so ).

Der Screenshot hilft mir da nicht so viel.

Zum Thema Ereignisverwaltung google mal nach Java+ActionListener+tutorial oder so

Viele Grüße,

Olek
- Netbeans Certified Associate -

Sharedox
Beiträge: 8
Registriert: 27.05.2013, 18:02

Re: [Hilfe] Images in GUI einbinden?

Beitrag von Sharedox » 30.05.2013, 19:26

Vielen Dank!
Funktioniert jetzt alles genau so wie es sein sollte. :)
Ich denke ich werde mir das Buch mal bei Gelegenheit zulegen.
lg

Antworten