Ein Bild für GUI (Java-Editor)

pole96

Mitglied
Hallo zusammen,

ich habe jetzt Informatik in der Schule und unser Thema ist Java. Ich muss über die Ferien ein Programm mit einem Kumpel schreiben, welches eine Lotterie simuliert. Das hat auch super geklappt. Nun, wir wollen in unserem GUI ein Bild haben, da die Optik auch bewertet wird.

Ich habe hier schon die Suchfunktion verwendet, allerdings war das einzige was ich fand, mir schon viel zu hoch. Die meisten haben schon eine Grundlage und suchen nur nach ihren Fehlern oder stecken schon in Gaming-Entwicklung. Ich bin eben ein totaler Anfänger. Deshalb würde ich mich über eine "Schritt-für-Schritt"-Erklärung freuen.


Unser Code bis jetzt:

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

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

public class cyber extends JFrame {
  // Anfang Attribute
  private JButton jButton1 = new JButton();
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JTextArea a = new JTextArea("");
    private JScrollPane aScrollPane = new JScrollPane(a);
  // Ende Attribute
  
  public cyber(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 306; 
    int frameHeight = 300;
    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
    
    jButton1.setBounds(120, 72, 75, 25);
    jButton1.setText("Generiere");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jButton1_ActionPerformed(evt);
      }
    });
    jButton1.setCursor(new Cursor(Cursor.HAND_CURSOR));
    jButton1.setBorder(BorderFactory.createBevelBorder(0, Color.BLACK, Color.BLACK));
    cp.add(jButton1);
    jLabel1.setBounds(8, 8, 325, 57);
    jLabel1.setText("Cyberkosmographie");
    jLabel1.setFont(new Font("Alien Encounters", Font.PLAIN, 26));
    cp.add(jLabel1);
    jLabel2.setBounds(120, 256, 180, 19);
    jLabel2.setText("© by Cyberkosmographisch AG");
    cp.add(jLabel2);
    aScrollPane.setBounds(24, 104, 25, 105);
    aScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
    aScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    a.setBackground(Color.BLACK);
    a.setForeground(Color.WHITE);
    a.setVisible(true);
    a.setWrapStyleWord(false);
    cp.add(aScrollPane);
    cp.setBackground(Color.GRAY); 
    // Ende Komponenten
    
    setVisible(true);
  } // end of public cyber
  
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
    
    int rzahlen[] = new int[6];
    int j = 0;
    
    //jTextField1aten ins Array stecken.     
    for (int i = 0; i < rzahlen.length; i++) {
      rzahlen[i] = (int)(Math.random()*50);
    }
    
    //Sortierung.
    int i, startwert, temp;
    for (i = rzahlen.length - 1; i > 0; i-- ) 
    {
      startwert = 0;
      for(j = 1; j <= i; j++)   //Das kleinste Element zwischen 1 udn i wird ermittelt.
      {
        if(rzahlen[j] > rzahlen[startwert])         
        startwert = j;
      }
      temp = rzahlen[startwert];   //Der kleinste Wert wird mit "i" getauscht.
      rzahlen[startwert] = rzahlen[i];
      rzahlen[i] = temp; 
    }           
    
    //Array auslesen!  
    while(j < rzahlen.length){
      a.setText(String.valueOf(rzahlen[0]+"\n"+rzahlen[1]+"\n"+rzahlen[2]+"\n"+rzahlen[3]+"\n"+rzahlen[4]+"\n"+rzahlen[5]));
      j++; //Variable hochzaehlen
    }
  } // end of jButton1_ActionPerformed
  
  // Ende Methoden
  
  public static void main(String[] args) {
    new cyber("cyber");
  } // end of main
  
} // end of class cyber



Habe noch eine Frage: Muss das Bild von der Festplatte geladen werden, oder kann auch ein Internetlink als Pfad angegeben werden?

Danke schonmal im Voraus für die Hilfe.

PS. Ich arbeite mit dem Java-Editor (den benutzen wir halt auch in der Schule) und Swing, wenn ich das richtig verstanden habe (jFrame).
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Um ein Bild darzustellen könntest du z.B sowas machen :

es gibt sicher noch unzählige andere wege, z.B das Image zeichnen lassen , über die paintComponent Methode, aber ich bin grad auf dem Sprung und das funktioniert so auch ;)

Java:
package tests;

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
 
	/**
	 * 
	 * @author kaoZ
	 *
	 */

 
public class Foo extends JPanel {
	
	BufferedImage img;
	ImageIcon icon;
	
	public Foo(){
		super();
		try{
			File path = new File("F:/Bilder/Dodge.png");
			img = ImageIO.read(path);
			icon = new ImageIcon(img);
		}catch(Exception ex){
			System.out.println("Datei konnte nicht geladen werden ");
		}
		
		add(new JLabel(icon));
	}
	
	public static void main(String[] args) {
		JFrame frame = new JFrame("Test");
		frame.add(new Foo());
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frame.pack();
		frame.setVisible(true);
	}
}

[EDIT]Schritt für Schritt erklärung liefere ich später wenn ich wieder zuhause bin ;)[/EDIT]
 
Zuletzt bearbeitet:

pole96

Mitglied
Okay, danke schon mal für die Antwort, aber ich werde wohl noch auf dich und deine Erklärung warten müssen. :D

Ich will schließlich auch verstehen was ich tue. Aber ich schau es mir schonmal an, danke sehr :)
 

kaoZ

Top Contributor
Also ich fasse nochmal grob zusammen :

Da ich nicht weiß wie weit du schon mit der OOP vertraut bist setze ich mal vorsichtig nicht ganz soweit vorne an, ich gehe mal davon aus was Konstruktoren , Parameter und klassen sind , falls nicht erkläre ich dir das auch gerne nochmal .

in meinem obrigen Beispiel benötigst du folgendes

1.BufferedImage
2.ImageIcon
3.JPanel

Als erstes erzeugen wir ein BufferedImage welches speicher für unser Bild freimacht und den pfad zu diesem hält. (Da unsere Klasse Foo von JPanel erbt , werden Objekte davon auch wie ein JPanel behandelt, ergo können diesem JComponents ( oder Objekte von Klassen die von dieser abgeleitet werden ) hinzugefügt werden, z.B JLabel,JButton usw.)

Java:
public class Foo extends JPanel{
  BufferedImage image;
  
  public Foo(){ //Parameterloser Standardkonstruktor 
   
  super(); // ruft den Standardkonstruktor der Superklasse auf (JPanel )
   
  File path = new File("C:/Beispielbild.jpg"); //Dieses File Objekt referenziert den Pfad zu unserem Bild
   
  image = ImageIO.read(path);  // In/Output für grafiken welcher wir unseren Dateipfad übergeben 

    //hier gehts gleich weiter...
  }

}

Jetzt da wir den Pfad und ein Objekt haben welches unser Bild referenziert, können wir es dem JPanel hinzufügen , dies geht nicht ohne weiteres da man einem JFrame oder JPanel zwar komponenten hinzufügen kann, aber diese müssen wie oben beschrieben von z.B JComponent abgeleitet sein um sie als komponente hinzuzufügen. Da dies nicht der Fall ist , machen wir einen kleinen Umweg, und erzeugen ein JLabel, ( welches ein ImageIcon entgegennehmen kann, welches wiederrum ein BufferedImage entgegennehmen kann).

Java:
public class Foo extends JPanel{
  BufferedImage image;
  ImageIcon icon;
  
  public Foo(){ 
     super();
     File path = new File("C:/Beispielbild.jpg"); 
   
     image = ImageIO.read(path);

     icon = new ImageIcon(image);

     add.(new JLabel(icon)); // hinzufügen einer Komponente ( JLabel ) welche unser icon entgegennehmen kann 
  }

}

Da wir beim aufrufen des Standardkonstruktors der klasse Foo, ein Objekt erzeugen welches von JPanel erbt, können wir dieses Objekt auch wie ein JPanel behandeln und fügen es einem JFrame hinzu.
hier einfach in der main Methode realisiert

Java:
public static void main(String[]args){
        JFrame frame = new JFrame("Test");
        frame.add(new Foo());  // neues anonymes Foo Objekt erzeugen + dem JFrame hinzufügen
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
}

und schon wird unser Bild in unserem JLabel , welches sich auf unserem JPanel( Foo Objekt in unserem Fall ) welches sich auf unserem JFrame befindet, angezeigt.:)
 
Zuletzt bearbeitet:

pole96

Mitglied
Okay, erscheint mir erstmal logisch.

Zu deiner Frage zu meinem Wissen: Ich bin ein totaler Anfänger. Allerdings weiß ich ja was Objekte oder Klassen sind.

Ich wette wenn ich das kopiere und durch richtige Namen ersetze, wird es ja auch funktionieren, aber wenn ich das dann meinem Lehrer erklären soll, bin ich verloren. :D

Das ist mir noch zu hoch. Eine externe Klasse für nur ein Bild, das muss nicht sein. Zumindest nicht auf meinem Niveau. Trotzdem danke, ich werde es mir merken und das üben, vielleicht für die Zukunft. :)

Bzw. berede ich das mit meinem Kumpel, der mit mir an dem Programm arbeitet und frage ihn, ob wir das einbringen wollen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
H MouseListener für ein eingefügtes Bild in einem JFrame Java Basics - Anfänger-Themen 7
E Input/Output Relativer Bild-Pfad für InputStream Java Basics - Anfänger-Themen 5
O Halbe Sekunde für bild.getScaledInstance() ? Java Basics - Anfänger-Themen 2
0 Den Pfad für das Bild angeben Java Basics - Anfänger-Themen 9
A per "update" ein Bild Strich für Strich "male Java Basics - Anfänger-Themen 9
G Scrollbars für bild Java Basics - Anfänger-Themen 2
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
J Bild loopen Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
C Erste Schritte Bild holen und speichern Java Basics - Anfänger-Themen 1
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
F Bild in ein Runnable Jar File packen (eclipse) Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
J Ganzes Bild Java Basics - Anfänger-Themen 4
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
I Bild aus Bereich laden Java Basics - Anfänger-Themen 3
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
Sogomn Bild will sich nicht skalieren lassen Java Basics - Anfänger-Themen 1
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
P Bild bearbeiten Java Basics - Anfänger-Themen 9
Z Datenmatrix in Bild verwandeln Java Basics - Anfänger-Themen 4
C Bild verschwinden lassen Java Basics - Anfänger-Themen 7
S Bild Icon aus ID3Tag auslesen Java Basics - Anfänger-Themen 4
E Bild vom FileChooser aus via ImageIcon in DB schreiben Java Basics - Anfänger-Themen 16
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
O Auflösung einer Bild-Datei bekommen ohne sie herunterzuladen?? Java Basics - Anfänger-Themen 7
L Bild-Datein "zuschneiden" Java Basics - Anfänger-Themen 11
O DeviantArt-Bild Konverter: Fehler.. Java Basics - Anfänger-Themen 16
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
M Bild einbinden Java Basics - Anfänger-Themen 7
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
T Bild laden Java Basics - Anfänger-Themen 7
R Bild in GUI Java Basics - Anfänger-Themen 11
D Eclipse Juno zeigt Bild nicht bei Run Java Basics - Anfänger-Themen 3
Kenan89 Bild mit jar öffnen Java Basics - Anfänger-Themen 4
S Problem bei Bewegung von einem Bild! Java Basics - Anfänger-Themen 2
J Bild mit transparenter Farbe Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben