Swing Kleine Bilder in Panel einfügen

Status
Nicht offen für weitere Antworten.

Saliver

Aktives Mitglied
Hallo Leute,

ich programmiere seit einigen Monaten mit einem Kommilitonen an unserem Schiffeversenken-Spiel.
Nun haben wir ein Problem die einzelnen Schiffsbilder als kleine Icons in das Panel an einer festgelegten Stelle einzufügen.
Würde mich wirklich sehr freuen, wenn ihr euch dazu bereit erklärt uns kurz weiterzuhelfen.

Kurz gesagt was wichtig ist: Möchte kleine Icons (haben eine feste Größe) an eine von mir festgelegte Stelle in einem Panel einfügen.

Bild:
schiffeversenken.jpg



bisheriger Code der GUI
Java:
package de.alka1de.schiffeversenken;

    import java.awt.*;
import java.awt.event.*;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import sun.tools.jar.JarImageSource;




    //Realisierung der Grafik
    class Gui extends Frame implements ActionListener {

	//Rahmen des Feldes
//    	private static  final int frame_x = 1843;
//    	private static  final int frame_y = 1525;
    	private static MenuBar menuleiste;
    	private static Menu menu1, menu2;
    	private static MenuItem item1, item2, item3;
    	//anlegen eines Bildes
    	
    	Panel playerPanel = new APanel();
    	Panel enemyPanel = new APanel();
    	
    	
    	public Gui() 
    	{	
    	    
    	    
    		//Überschrift im Rahmen
    		super("ULTIMATE SCHIFFE VERSENKEN");
    		
    
    	
    		setSize( Toolkit.getDefaultToolkit().getScreenSize());
    
     	
    		GraphicsDevice device; 
                device=GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0]; 
                device.setFullScreenWindow(this); 
                device.setDisplayMode(new DisplayMode(1680,1050,16,0)); 
    	    		
    		//Menüleiste
    		menuleiste = new MenuBar();
    		
    		//mit den Menüpunkten Spiel und Hilfe
    		menu1 = new Menu ("Spiel");
    		
    		//Spiel hat zwei Untermenüpunkte Start (vorgesehen, aber funktioniert nicht!) und Beenden
    		item1 = new MenuItem ("Start");
    		item2 = new MenuItem ("Beenden");
    		
    		//Hilfe hat das Untermenü Spielregeln (vorgesehen, aber funktioniert nicht !)
    		menu2 = new Menu("Hilfe");
    		
    		item3 = new MenuItem ("Spielregeln");
    	
    		
    		//Action Listener wird hinzugefügt
    		item2.addActionListener(this);
    	
    			
    		addWindowListener //schließt Fenster bei Klick aufs Kreuz rechts oben
    		(
    			new WindowAdapter() 
    			{
    				public void windowClosing (WindowEvent e) 
    				{
    					System.exit(0); 
    				}
    			}
    		);

    		//Hinzufügen des Untermenüs 1 (Start) zum ersten Hauptmenü (Spiel)
    		menu1.add(item1);
    		//Hinzufügen des Untermenüs 2 (Beenden) zum ersten Hauptmenü (Spiel)
    		menu1.add(item2);

    		//Hinzufügen des Untermenüs 3 (Spielregeln) zum zweiten Hauptmenü (Hilfe)
    		menu2.add(item3);
    	
    	    //Hinzufügen der Haptmenüs Spiel und Hilfe zur Menüleiste
    		menuleiste.add(menu1);
    		menuleiste.add(menu2);
    	    
    		//Setzen der Menüleiste in den Frame
    		this.setMenuBar(menuleiste);
    	
	
    		
    	
  		//this.add(new JButton (new ImageIcon("bg_top.JPG")), BorderLayout.BEFORE_LINE_BEGINS);
    		
    		
    		this.add(playerPanel, BorderLayout.WEST);
    		this.add(new JButton(new ImageIcon("vs.jpg")), BorderLayout.CENTER);
    		this.add(enemyPanel, BorderLayout.EAST);
    		this.add(new JLabel(new ImageIcon("bg_top.png")), BorderLayout.NORTH);
    	//	this.add(new JLabel(new ImageIcon("bg_btn.gif")), BorderLayout.SOUTH);
    		
    	}



	//Updaten der Grafik
    	public void update(Graphics g) 
    	{
    		paint(g);
    	}
    	
    	//action listener, funktioniert noch nicht!
    	
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		//variable
    		String action;
    		
    		//get Action
    		action = e.getActionCommand();
    		
    		//Ausführen des Befehls, der zur Aktion gehört
    		if (action.equals("Beenden"))
    		{
    			System.exit(0);
    		}
    		else if (action.equals("Start"))
    		{
    			//funktioniert noch nicht, sollte eigentlich den Spielstart ausführen
    		}
    	}
    }


Danke und Gruß,
Sali
 

L-ectron-X

Gesperrter Benutzer
Schreibe dir ein Model, welches ein Gitter repräsentiert und verwalte darin die Daten/Spielzüge.
 

Saliver

Aktives Mitglied
Danke, aber gibt es da noch eine einfachere Alternative?

z.B über Angaben zur X-Achse und Y-Achse?
 
Zuletzt bearbeitet:

L-ectron-X

Gesperrter Benutzer
Genau das kannst du in einem Datenmodel definieren.
Du solltest ohnehin Datenverarbeitung von der GUI trennen. Das ist Teil der OOP.

Im Model speicherst du Objekte, in denen der Spieler/Besitzer, der Schiffstyp und die Position des Schiffs gespeichert ist.
Anhand dieser Informationen kann die GUI die Schiffe und deren Positionen zeichnen.
 

Saliver

Aktives Mitglied
Ich glaube mein Wissen ist noch nicht so weit, dass ich mir das zutrauen könnte.
Kennst du zufällig ein Tutorial dafür?
 

Marco13

Top Contributor
Nebenbei: Man sollte nicht AWT (Frame, MenuItem, Panel) und Swing (JButton, JLabel) mischen. Stattdessen JFrame, JMenuItem und JPanel verwenden ...
 

Saliver

Aktives Mitglied
Danke für die schnelle Hilfe.
Ich habe mich gestern über das MVC-Konzept erkundigt und muss sagen, dass es kompliziertere Ausmaßen annimmt, als wir eigentlich vorgesehen haben.


Gibt es keine einfachere Alternative?

Gruß,
Alexej
 

L-ectron-X

Gesperrter Benutzer
Alles andere wird früher oder später mit zunehmender Komplexität deines Programmes immer unübersichtlicher, schlechter wartbar, kaum noch wiederverwendbar und in Spaghetti-Code enden.
Ein Fiasko also. Lerne die OOP-Grundlagen, teile dein Programm in mehrere Schichten/Klassen auf, nur dann wird dein Programm den (heutigen) Anforderungen gerecht.
 

Saliver

Aktives Mitglied
Hallo Jungs,

ich habe mich nun etwas in die Materie bezüglich MVC, GridLayout-Manager und JTable eingelesen.
Jedoch ist es für mich sehr schwer dies in die Praxis umzusetzen.
Das Prinzip und die Relevanz für OOP dahinter kann ich natürlich nachvollziehen, aber wie so oft schweitert es an der Umsetzung.
Kann mir hierbei jemand in meine GUI einen GridLayout-Manager oder Raster einzubauen?
 

Saliver

Aktives Mitglied
Hallo Jungs,

ich habe mich nun etwas in die Materie bezüglich MVC, GridLayout-Manager und JTable eingelesen.
Jedoch ist es für mich sehr schwer dies in die Praxis umzusetzen.
Das Prinzip und die Relevanz für OOP dahinter kann ich natürlich nachvollziehen, aber wie so oft schweitert es an der Umsetzung.
Kann mir hierbei jemand in meine GUI einen GridLayout-Manager oder Raster einzubauen?


EDITH: Damit ihr mich nicht falsch versteht. Ein Raster habe ich bereits, ich weiß nur nicht wie ich es auf meine GUI lege um anschließend mit den Koordinaten Bilder einzugüfen.

Das Raster:
Java:
import java.awt.*; 
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

    public class Raster extends Canvas { 
        /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public static final int IDEAL_WIDTH = 1024; 
        public static final int IDEAL_HEIGHT = 768; 

        public void paint(Graphics g) { 
            g.setColor(Color.BLACK); 
            g.fillRect(0, 0, IDEAL_WIDTH, IDEAL_HEIGHT); 
             
            // Hier wird das array erstellt
            Color values[][] = new Color[10][10]; 
            for (int i = 0; i < 10; i++){ 
                for(int j = 0; j < 10; j++) 
                    values[i][j] = Color.WHITE; 
            } 
             
            // beispielfarben für den Inhalt des Rasters
            // sonst ändert sich nichts an der Darstellung 
            values[9][9] = Color.RED; 
            values[8][8] = Color.BLUE; 
            values[7][7] = Color.GREEN;
            values[6][6] = Color.YELLOW;
            
            
             
            // ankerpunkt für das Raster 
            int x_start = 0; 
            int y_start = 20; 
            // Raster zeichnen 
            for (int i = 0; i < 10; i++) {         
                for (int j = 0; j < 10; j++) { 
                    g.setColor(values[i][j]); 
                    // Der Wert gibt die breite von dem raster an.
                    g.fillRect(x_start + i * 30, y_start + j * 30, 30, 30); 
                    // strichstärke des Rasters (y-Achse)
                    y_start += 1; 
                } 
                y_start = 20; 
                // strichstärke des rasters (x-Achse)
                x_start += 1; 
            } 
        } 

        public static void main(String args[]) { 
             
            Frame f = new Frame("test"); 
            f.add("Center", new Raster()); 
            f.setSize(IDEAL_WIDTH, IDEAL_HEIGHT); 
            f.setVisible(true); 
            f.addWindowListener(new WindowAdapter() { 
                public void windowClosing(WindowEvent e) { 
                    System.exit(0); 
                } 
            }); 
             
        } 
    }
 
Zuletzt bearbeitet:

homer65

Top Contributor
Hier mal ein Ausschnitt aus einem Programm das ein Schachbrett darstellt. Dazu werden die einzelnen Felder als ImagePanel mit dem passenden
Bild dargestellt.
Java:
import javax.swing.*;
import java.awt.*;
public class ImagePanel extends JPanel
{
   private Image img = null;

   public ImagePanel(Image img)
   {
      this.img = img;
      Dimension dim = new Dimension(48,48);
      setSize(dim);
      setPreferredSize(dim);
      setMinimumSize(dim);
      setMaximumSize(dim);
   }

   public void paintComponent(Graphics g)
   {
      super.paintComponent(g);
      if(img != null)
      {
         g.drawImage(img,0,0,this);
      }
   }
}

Ein Link zum Bildereinlesen: Grafikdateien laden und anzeigen ? Byte-Welt Wiki
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Kleine Sub-Tabelle in SpreadsheetView-Zelle anzeigen AWT, Swing, JavaFX & SWT 9
C 3 kleine Probleme... AWT, Swing, JavaFX & SWT 13
I Swing Beim Fenster das kleine Symbol(ICS) ändern AWT, Swing, JavaFX & SWT 3
L JPanel kleine "Animation" AWT, Swing, JavaFX & SWT 7
P Pfeilpolygon per Maus rotierbar machen - Kleine Schwierigkeiten AWT, Swing, JavaFX & SWT 29
Z kleine JButtons und ihre Beschriftung AWT, Swing, JavaFX & SWT 5
H kleine Bildbearbeitung AWT, Swing, JavaFX & SWT 3
hdi SWT SWT Table: 2 kleine Probleme AWT, Swing, JavaFX & SWT 4
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
E AWT Kleine Hilfestellung bei Bildern in Mediatracker AWT, Swing, JavaFX & SWT 7
G Sehr kleine JButtons mit Icon oder Beschriftung AWT, Swing, JavaFX & SWT 2
M 2 Kleine Fragen zum JOptionFrame AWT, Swing, JavaFX & SWT 5
K kleine frage zum Spinner (bezüglich Action) AWT, Swing, JavaFX & SWT 2
G kleine Frage beim initialisieren AWT, Swing, JavaFX & SWT 2
R Kleine Panels auf einem großen Panel frei platzieren AWT, Swing, JavaFX & SWT 11
F kleine Zahlen/buchstaben mit Java darstellen? AWT, Swing, JavaFX & SWT 3
J Kleine frage zu PixelGrabber AWT, Swing, JavaFX & SWT 3
S kleine Frage zu drawPolygon AWT, Swing, JavaFX & SWT 5
N 3 kleine Probleme AWT, Swing, JavaFX & SWT 7
G kleine JDesktopPane problem AWT, Swing, JavaFX & SWT 2
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben