Karteneditor Problem

Status
Nicht offen für weitere Antworten.

Dagobert

Bekanntes Mitglied
Ich bin immer noch dabei mein kleinen Karteneditor zu bastel, nachdem ich längere Zeit nicht weiter gemacht habe, habe ich mich heute mal wieder dran gesetzt. Aber ich bekomme mein Problem immer noch nicht in den Griff, denn meine Hauptkarte wird nicht an korekter Position angezeigt, oder ehr da wo ich sie haben will.
Ich will sie in der freien Fläche des Fenster haben, aber ich bekomme z.B. überschneidungen mit der Toolbar.
Mapeditor.JPG


Könnte mir jemand helfen dieses Prblem in den Griff zu bekommen???

Code:
private void createGUI(int width, int height){
		
		this.tiles = new HashMap<Integer, Tile>();
		// Menüleiste mit Elmenten wie Datei laden, zoom, u.a.
		menu = new JMenuBar();
		// Die vier Root-Menüs
		JMenu dateiMenu = new JMenu("Datei" , false);
		JMenu ansichtMenu = new JMenu("Ansicht", false);
		JMenu extraMenu = new JMenu("Extra", false);
		JMenu hilfeMenu = new JMenu("Hilfe", false);
		// Das Dateimenü
		JMenuItem ladenMenu = new JMenuItem("Laden");
		ladenMenu.addActionListener(this);
		dateiMenu.add(ladenMenu);
		
		JMenuItem speichernMenu = new JMenuItem("Speichern");
		speichernMenu.addActionListener(this);
		dateiMenu.add(speichernMenu);
		
		JMenuItem speicherUnterMenue = new JMenuItem("Speichern unter");
		speicherUnterMenue.addActionListener(this);
		dateiMenu.add(speicherUnterMenue);
		
		JMenuItem beendenMenu = new JMenuItem("Beenden");
		beendenMenu.addActionListener(this);
		dateiMenu.add(beendenMenu);
		// Das Ansichentmenü
		JMenuItem zoomH = new JMenuItem("Zoom+");
		zoomH.addActionListener(this);
		ansichtMenu.add(zoomH);
		
		JMenuItem zoomZ = new JMenuItem("Zoom-");
		zoomZ.addActionListener(this);
		ansichtMenu.add(zoomZ);
		
		JMenuItem standartGroese = new JMenuItem("Normal");
		standartGroese.addActionListener(this);
		ansichtMenu.add(standartGroese);
		// Das Extramenü
		JMenuItem update = new JMenuItem("Update");
		update.addActionListener(this);
		extraMenu.add(update);
		
		JMenuItem ueber = new JMenuItem("Über");
		ueber.addActionListener(this);
		extraMenu.add(ueber);
		// Das Hilfemenü
		JMenuItem hilfe = new JMenuItem("Hilfe");
		hilfe.addActionListener(this);
		hilfeMenu.add(hilfe);
		// Die Menüleiste mit den Untermenüs beleben
		menu.add(dateiMenu);
		menu.add(ansichtMenu);
		menu.add(extraMenu);
		menu.add(hilfeMenu);
		
		// Erstellen des Root Panels
		setPreferredSize(new Dimension(width, height));
		setSize(new Dimension(width, height));
		setLayout(new BorderLayout());
		// Toolbar mit Werkzeugen die man für den Editor braucht
		JToolBar tools = new JToolBar("Werkzeugleiste", JToolBar.HORIZONTAL);
		tools.setFloatable(false);
		tools.setPreferredSize(new Dimension(400, 30));
		add(tools, BorderLayout.NORTH);
		// Neue Karte Button
		JButton neu = new JButton("Neue Karte");
		neu.setPreferredSize(new Dimension(30,30));
		neu.setSize(new Dimension(30,30));
		neu.addActionListener(this);
		tools.add(neu);
		// Karte Laden Button
		JButton oeffnen = new JButton("Laden");
		oeffnen.setPreferredSize(new Dimension(30,30));
		oeffnen.setSize(new Dimension(30,30));
		oeffnen.addActionListener(this);
		tools.add(oeffnen);
		// Speicher Button
		JButton speichern = new JButton("Speichern");
		neu.setPreferredSize(new Dimension(30,30));
		neu.setSize(new Dimension(30,30));
		neu.addActionListener(this);
		tools.add(speichern);
		JButton zoomin = new JButton("Zoom+");
		zoomin.setSize(new Dimension(30,30));
		zoomin.addActionListener(this);
		tools.add(zoomin);
		JButton zoomout = new JButton("Zoom-");
		zoomout.setSize(new Dimension(30,30));
		zoomout.addActionListener(this);
		tools.add(zoomout);
		// Panels für die verfügbaren Tiles & Objekte
		JPanel tilesPanel = new JPanel();
		JPanel objectPanel = new JPanel();
		// Beide Panels in ein Tabb-Dingen :D
		JTabbedPane objectTabbed = new JTabbedPane();
		objectTabbed.setPreferredSize(new Dimension(200, 300));
		objectTabbed.addTab("Tiles", tilesPanel);
		objectTabbed.addTab("Objekte", objectPanel);
		// Tiles laden
		loadTiles();
		// Für jede Tile ein Button erstellen
		tilesButtons = new Vector<JButton>();
		for(int i = 0; i < tiles.size(); i++){
			JButton button = new JButton(new ImageIcon(tiles.get(i).getExampleImage()));
			button.setSize(new Dimension(50, 50));
			button.setPreferredSize(new Dimension(50, 50));
			button.setName(String.valueOf(i));
			button.addActionListener(this);
			tilesButtons.add(button);
			tilesPanel.add(button, FlowLayout.LEFT);
		}
		// Minikarte
		JPanel miniMap = new JPanel();
		miniMap.setBackground(Color.green);
		miniMap.setPreferredSize(new Dimension(190,190));
		// East Panel
		JPanel eastPanel = new JPanel();
		eastPanel.setPreferredSize(new Dimension(200,200));
		eastPanel.add(objectTabbed);
		eastPanel.add(miniMap);
		add(eastPanel, BorderLayout.EAST);
		
		// Dia Hauptkarte
		mapContainer = new Container();
//		mapContainer.setBounds(5, tools.getX()+ tools.getHeight()+5, 100, 100);
		mapContainer.setSize(new Dimension(100,100));
		mapContainer.addMouseListener(this);
		mapContainer.addMouseMotionListener(this);
		mapContainer.addMouseWheelListener(this);
		add(mapContainer, BorderLayout.CENTER);
		// Emulation des Displays
		display = new Rectangle2D.Double(mapContainer.getX() , mapContainer.getY(), mapContainer.getWidth(), mapContainer.getHeight());
		// Die verschiedenen Curser initalisieren
		standart = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
		invisible =
			Toolkit.getDefaultToolkit().createCustomCursor(
					Toolkit.getDefaultToolkit().getImage(""),
					new Point(0,0),
			"invisible");
		// Die Statusleiste
		status = new JPanel();
		status.setBackground(Color.red);
		add(status, BorderLayout.SOUTH);
		statusInfo = new JLabel("Keine Karte geöffnet");
		statusInfo.setDoubleBuffered(true);
		status.add(statusInfo);
		statusbar = new JProgressBar();
		statusbar.setVisible(false);
		status.add(statusbar);
		// Fenster erstellen
		frame = new JFrame();
		frame.setPreferredSize(new Dimension(width, height));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setTitle("Map-Editor V. 1.1");
		frame.getContentPane().add(this);
		frame.pack();
		frame.setVisible(true);
		Thread t = new Thread(this);
		t.start();
		
		frame.setJMenuBar(menu);
	}

und warum darf der Beitragstitel nicht : "Problem mit Karteneditor Layout" heißten???

mfg. Dagobert
 

Dagobert

Bekanntes Mitglied
Ich habs immer noch nicht hinbekommen.
Kann mir denn keiner weiterhelfen.
Ich weis jetzt das meien Componente Pos(0/0) hast und LxB 0x0.
Aber wie machen ich der klar das die vom Borderlayout eine größe bekomme?

mfg. Dagobert
 

Marco13

Top Contributor
:autsch: sehr übersichtlich....

Ich nehme mal an, das, wo das Rechteck mit der "93" reingezeichnet wird, wird unerwünschterweise von der Toolbar überlappt!? Am besten wäre ein Stück compilierbarer code, aber ... wenn das, wo das "93" drin ist, ein JPanel ist, das im BorderLayout.CENTER liegt, sollte das eigentlich kein Problem sein.
 

Dagobert

Bekanntes Mitglied
Ja, aber die 93 hat damit nix zu tun... ^^
das nur die aktuelle FPS
in dem Rechteck soll später die Karte hineinkommen
aber stimmt es wird überlappt. Hinter dem Rechteck steckt noch ein Container der dafür sorgen soll das der Platz "reserviert" wird.
Aber der Container ist (0,0,0,0) groß wenn ich ihm nicht explizit eine Größe festlege.
Mein Problem ist halt eigentlich nur das sich das ganze Überlapt und ich das Layout so net hinbekomme das es sich net Überlappt

mfg. Dagobert
 

Marco13

Top Contributor
Du musst die Layouts und die Components richtig verschachteln (und das auch am besten im Code irgendwo deutlich machen.........)
Auf den ersten Blick sieht das jetzt so aus:
- ein JFrame, dessen ContentPane ein BorderLayout hat
- in der ContentPane im BorderLayout.NORTH die Toolbar
- in der ContentPane im BorderLayout.SOUTH die Statusbar
- in der ContentPane im BorderLayout.EAST ein JPanel mit GridLayout oder so, wo dann die TabbedPane und das grüne drin liegen
- in der ContentPane im BorderLayout.CENTER ein JPanel mit der eigentlichen Map drin
 

Dagobert

Bekanntes Mitglied
Jop das hast du Goldrichtig so erkannt XD
aber ich weiß immer noch net warum die Mitte net richtig ist... ich kriege das iwie einfach net hin^^
 

Dagobert

Bekanntes Mitglied
So erstmal SORRY das es so lange gedauert hat, habe aber wenig Zeit gehabt.

Hier ist dann mal ein Beispiel (hab es so weit wies einfach möglich war auf die GUI reduziert):
Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.DecimalFormat;
import java.util.*;
import java.util.zip.ZipFile;
import javax.imageio.ImageIO;
import javax.swing.*;

public class MapEditor extends JPanel{

	private String mapName; // Name der Karte
	private int mapWidth; // Gesamtlänge der Karte in cm
	private int mapHeight; // Gesamthöhe der Karte in cm

	// ///////////
	// Minimap //
	// ///////////

	private Rectangle2D minimapArea; // Minimapbereich auf dem Bildschirm
	private Container minimapContainer; // Container für die Minimap
	private BufferedImage minimapImg; // Bild der Minimap

	// //////////////////////////////
	// Graphische Anzeigeelemente //
	// //////////////////////////////

	private JFrame frame; // Das Hauptfenster
	private Container mapContainer; // Der Container der über der eigentlichen
									// Karte liegt
	private Rectangle2D.Double display;
	private Rectangle2D maparea; // Sichtbarer bereich
	private Vector<JButton> tilesButtons; // Zum Speichern der Buttones für die
											// Tiles
	private JPanel status; // Hier werden alle Statusinformationen eingefügt
	private JLabel statusInfo; // Hier wird die aktuelle Position, usw.
								// angegeben
	private JProgressBar statusbar; // Eine Statusbar die ggf. Statuse Anzeigt

	private JMenuBar menu; // Die Menüleiste

	public static void main(String[] argv) {
		new MapEditor(800, 600);
	}

	/**
	 * Erweiterter Konstruktor
	 * 
	 * @param width
	 *            , Länge des Panels
	 * @param height
	 *            , Höhe des Panels
	 */
	public MapEditor(int width, int height) {
		createGUI(width, height);
	}

	private void createObjects() {

		this.maparea = new Rectangle2D.Double(0, 0, 0, 0);
		this.minimapArea = maparea;
	}

	private void createGUI(int width, int height) {
		// Menüleiste mit Elmenten wie Datei laden, zoom, u.a.
		menu = new JMenuBar();
		// Die vier Root-Menüs
		JMenu dateiMenu = new JMenu("Datei", false);
		JMenu ansichtMenu = new JMenu("Ansicht", false);
		JMenu extraMenu = new JMenu("Extra", false);
		JMenu hilfeMenu = new JMenu("Hilfe", false);
		// Das Dateimenü
		JMenuItem ladenMenu = new JMenuItem("Laden");

		dateiMenu.add(ladenMenu);
		JMenuItem speichernMenu = new JMenuItem("Speichern");

		dateiMenu.add(speichernMenu);
		JMenuItem speicherUnterMenue = new JMenuItem("Speichern unter");

		dateiMenu.add(speicherUnterMenue);
		JMenuItem beendenMenu = new JMenuItem("Beenden");

		dateiMenu.add(beendenMenu);
		// Das Ansichentmenü
		JMenuItem zoomH = new JMenuItem("Zoom+");

		ansichtMenu.add(zoomH);
		JMenuItem zoomZ = new JMenuItem("Zoom-");

		ansichtMenu.add(zoomZ);
		JMenuItem standartGroese = new JMenuItem("Normal");

		ansichtMenu.add(standartGroese);
		// Das Extramenü
		JMenuItem update = new JMenuItem("Update");

		extraMenu.add(update);
		JMenuItem ueber = new JMenuItem("Über");

		extraMenu.add(ueber);
		// Das Hilfemenü
		JMenuItem hilfe = new JMenuItem("Hilfe");

		hilfeMenu.add(hilfe);
		// Die Menüleiste mit den Untermenüs beleben
		menu.add(dateiMenu);
		menu.add(ansichtMenu);
		menu.add(extraMenu);
		menu.add(hilfeMenu);

		// Erstellen des Root Panels
		setPreferredSize(new Dimension(width, height));
		setSize(new Dimension(width, height));
		setLayout(new BorderLayout());
		setBackground(Color.CYAN);
		// Toolbar mit Werkzeugen die man für den Editor braucht
		JToolBar tools = new JToolBar("Werkzeugleiste", JToolBar.HORIZONTAL);
		tools.setFloatable(false);
		tools.setPreferredSize(new Dimension(400, 30));
		add(tools, BorderLayout.NORTH);
		// Neue Karte Button
		JButton neu = new JButton("Neue Karte");
		neu.setPreferredSize(new Dimension(30, 30));
		neu.setSize(new Dimension(30, 30));

		tools.add(neu);
		// Karte Laden Button
		JButton oeffnen = new JButton("Laden");
		oeffnen.setPreferredSize(new Dimension(30, 30));
		oeffnen.setSize(new Dimension(30, 30));

		tools.add(oeffnen);
		// Speicher Button
		JButton speichern = new JButton("Speichern");
		neu.setPreferredSize(new Dimension(30, 30));
		neu.setSize(new Dimension(30, 30));

		tools.add(speichern);
		// ZoomeIn Button
		JButton zoomin = new JButton("Zoom+");
		zoomin.setSize(new Dimension(30, 30));

		tools.add(zoomin);
		// ZoomOut Button
		JButton zoomout = new JButton("Zoom-");
		zoomout.setSize(new Dimension(30, 30));

		tools.add(zoomout);
		// Panels für die verfügbaren Tiles & Objekte
		JPanel tilesPanel = new JPanel();
		JPanel objectPanel = new JPanel();
		// Beide Panels in ein Tabb-Dingen :D
		JTabbedPane objectTabbed = new JTabbedPane();
		objectTabbed.setPreferredSize(new Dimension(200, 300));
		objectTabbed.addTab("Tiles", tilesPanel);
		objectTabbed.addTab("Objekte", objectPanel);
		// Tiles laden

		// Für jede Tile ein Button erstellen
		tilesButtons = new Vector<JButton>();
		// Minikarte
		JPanel miniMap = new JPanel();
		miniMap.setBackground(Color.green);
		miniMap.setPreferredSize(new Dimension(180, 180));
		// East Panel
		JPanel eastPanel = new JPanel();
		eastPanel.setPreferredSize(new Dimension(200, 200));
		eastPanel.setMinimumSize(new Dimension(200, 200));
		eastPanel.add(objectTabbed);
		eastPanel.add(miniMap);
		add(eastPanel, BorderLayout.EAST);

		// Dia Hauptkarte
		mapContainer = new Container();
		mapContainer.setBackground(Color.blue);
		mapContainer.setSize(new Dimension(300, 300));
		System.out.println("Map:\nX: " + mapContainer.getX() + "\nY: "
				+ mapContainer.getY() + "\nB: " + mapContainer.getWidth()
				+ "\nH: " + mapContainer.getHeight());
		add(mapContainer, BorderLayout.CENTER);
		// Emulation des Displays
		display = new Rectangle2D.Double(mapContainer.getX(), mapContainer
				.getY(), mapContainer.getWidth(), mapContainer.getHeight());
		// Die Statusleiste
		status = new JPanel();
		status.setBackground(Color.red);
		add(status, BorderLayout.SOUTH);
		statusInfo = new JLabel("Keine Karte geöffnet");
		statusInfo.setDoubleBuffered(true);
		status.add(statusInfo);
		statusbar = new JProgressBar();
		statusbar.setVisible(false);
		status.add(statusbar);
		// Fenster erstellen
		frame = new JFrame();
		frame.setPreferredSize(new Dimension(width, height));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setTitle("Map-Editor V. 1.1");
		frame.getContentPane().add(this);
		frame.pack();
		frame.setVisible(true);

		frame.setJMenuBar(menu);
	}
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawRect((int) display.getX(), (int) display.getY(), (int) display.getWidth(), (int) display.getHeight()); 
	}
}
 

Marco13

Top Contributor
Ja, die Klasse extendet JPanel, und von ihr üebrschreibst du auch paintComponent, und alles, was dort gezeichnet wird, beizieht sich auf die Haupklasse. Die enthält aber noch jede Menge andere Components. Statt dort irgendwie eine "display-emulation(!?!)" einzubauen, solltest du das JPanel, das die Karte zeichnet (d.h. das, von dem du paintComponent überschreibst) in den "mapContainer" legen.

Sowas wie "setSize" aufzurufen bringt übrigens nichts, wenn man einen LayoutManager verwendet. Welchen LayoutManager du dann für den mapContainer verwendest, bleibt dir überlassen (wenn du unbedingt willst, kannst du "null" als LayoutManager setzen, und dann auch dein "mapPanel" mit setSize usw. verändern, aber das macht nur selten Sinn).

Ganz grob sowas
Code:
// Von [url]http://www.java-forum.org/de/viewtopic.php?p=452507#452507[/url]

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.text.DecimalFormat;
import java.util.*;
import java.util.zip.ZipFile;
import javax.imageio.ImageIO;
import javax.swing.*;

public class MapEditor extends JPanel{

   private String mapName; // Name der Karte
   private int mapWidth; // Gesamtlänge der Karte in cm
   private int mapHeight; // Gesamthöhe der Karte in cm

   // ///////////
   // Minimap //
   // ///////////

   private Rectangle2D minimapArea; // Minimapbereich auf dem Bildschirm
   private Container minimapContainer; // Container für die Minimap
   private BufferedImage minimapImg; // Bild der Minimap

   // //////////////////////////////
   // Graphische Anzeigeelemente //
   // //////////////////////////////

   private JFrame frame; // Das Hauptfenster
   private Container mapContainer; // Der Container der über der eigentlichen
                           // Karte liegt
   private Rectangle2D.Double display;
   private Rectangle2D maparea; // Sichtbarer bereich
   private Vector<JButton> tilesButtons; // Zum Speichern der Buttones für die
                                 // Tiles
   private JPanel status; // Hier werden alle Statusinformationen eingefügt
   private JLabel statusInfo; // Hier wird die aktuelle Position, usw.
                        // angegeben
   private JProgressBar statusbar; // Eine Statusbar die ggf. Statuse Anzeigt

   private JMenuBar menu; // Die Menüleiste

   public static void main(String[] argv) {
      new MapEditor(800, 600);
   }

   /**
    * Erweiterter Konstruktor
    *
    * @param width
    *            , Länge des Panels
    * @param height
    *            , Höhe des Panels
    */
   public MapEditor(int width, int height) {
      createGUI(width, height);
   }

   private void createObjects() {

      this.maparea = new Rectangle2D.Double(0, 0, 0, 0);
      this.minimapArea = maparea;
   }

   private void createGUI(int width, int height) {
      // Menüleiste mit Elmenten wie Datei laden, zoom, u.a.
      menu = new JMenuBar();
      // Die vier Root-Menüs
      JMenu dateiMenu = new JMenu("Datei", false);
      JMenu ansichtMenu = new JMenu("Ansicht", false);
      JMenu extraMenu = new JMenu("Extra", false);
      JMenu hilfeMenu = new JMenu("Hilfe", false);
      // Das Dateimenü
      JMenuItem ladenMenu = new JMenuItem("Laden");

      dateiMenu.add(ladenMenu);
      JMenuItem speichernMenu = new JMenuItem("Speichern");

      dateiMenu.add(speichernMenu);
      JMenuItem speicherUnterMenue = new JMenuItem("Speichern unter");

      dateiMenu.add(speicherUnterMenue);
      JMenuItem beendenMenu = new JMenuItem("Beenden");

      dateiMenu.add(beendenMenu);
      // Das Ansichentmenü
      JMenuItem zoomH = new JMenuItem("Zoom+");

      ansichtMenu.add(zoomH);
      JMenuItem zoomZ = new JMenuItem("Zoom-");

      ansichtMenu.add(zoomZ);
      JMenuItem standartGroese = new JMenuItem("Normal");

      ansichtMenu.add(standartGroese);
      // Das Extramenü
      JMenuItem update = new JMenuItem("Update");

      extraMenu.add(update);
      JMenuItem ueber = new JMenuItem("Über");

      extraMenu.add(ueber);
      // Das Hilfemenü
      JMenuItem hilfe = new JMenuItem("Hilfe");

      hilfeMenu.add(hilfe);
      // Die Menüleiste mit den Untermenüs beleben
      menu.add(dateiMenu);
      menu.add(ansichtMenu);
      menu.add(extraMenu);
      menu.add(hilfeMenu);

      // Erstellen des Root Panels
      setPreferredSize(new Dimension(width, height));
      setSize(new Dimension(width, height));
      setLayout(new BorderLayout());

      // Toolbar mit Werkzeugen die man für den Editor braucht
      JToolBar tools = new JToolBar("Werkzeugleiste", JToolBar.HORIZONTAL);
      tools.setFloatable(false);
      tools.setPreferredSize(new Dimension(400, 30));
      add(tools, BorderLayout.NORTH);
      // Neue Karte Button
      JButton neu = new JButton("Neue Karte");
      neu.setPreferredSize(new Dimension(30, 30));
      neu.setSize(new Dimension(30, 30));

      tools.add(neu);
      // Karte Laden Button
      JButton oeffnen = new JButton("Laden");
      oeffnen.setPreferredSize(new Dimension(30, 30));
      oeffnen.setSize(new Dimension(30, 30));

      tools.add(oeffnen);
      // Speicher Button
      JButton speichern = new JButton("Speichern");
      neu.setPreferredSize(new Dimension(30, 30));
      neu.setSize(new Dimension(30, 30));

      tools.add(speichern);
      // ZoomeIn Button
      JButton zoomin = new JButton("Zoom+");
      zoomin.setSize(new Dimension(30, 30));

      tools.add(zoomin);
      // ZoomOut Button
      JButton zoomout = new JButton("Zoom-");
      zoomout.setSize(new Dimension(30, 30));

      tools.add(zoomout);
      // Panels für die verfügbaren Tiles & Objekte
      JPanel tilesPanel = new JPanel();
      JPanel objectPanel = new JPanel();
      // Beide Panels in ein Tabb-Dingen :D
      JTabbedPane objectTabbed = new JTabbedPane();
      objectTabbed.setPreferredSize(new Dimension(200, 300));
      objectTabbed.addTab("Tiles", tilesPanel);
      objectTabbed.addTab("Objekte", objectPanel);
      // Tiles laden

      // Für jede Tile ein Button erstellen
      tilesButtons = new Vector<JButton>();
      // Minikarte
      JPanel miniMap = new JPanel();
      miniMap.setBackground(Color.green);
      miniMap.setPreferredSize(new Dimension(180, 180));
      // East Panel
      JPanel eastPanel = new JPanel();
      eastPanel.setPreferredSize(new Dimension(200, 200));
      eastPanel.setMinimumSize(new Dimension(200, 200));
      eastPanel.add(objectTabbed);
      eastPanel.add(miniMap);
      add(eastPanel, BorderLayout.EAST);

      // Dia Hauptkarte
      mapContainer = new JPanel();
      mapContainer.setLayout(new BorderLayout());// Oder welches auch immer...
      mapContainer.setBackground(Color.blue);
      //mapContainer.setSize(new Dimension(300, 300));
      //System.out.println("Map:\nX: " + mapContainer.getX() + "\nY: "
      //      + mapContainer.getY() + "\nB: " + mapContainer.getWidth()
      //      + "\nH: " + mapContainer.getHeight());
      add(mapContainer, BorderLayout.CENTER);

      // Erstelle das Panel, das KEINE anderen Panels enthält, sondern
      // NUR die Aufgabe hat, die Map zu zeichnen
      MapPanel mapPanel = new MapPanel();
      mapContainer.add(mapPanel);


      // Emulation des Displays
      display = new Rectangle2D.Double(mapContainer.getX(), mapContainer
            .getY(), mapContainer.getWidth(), mapContainer.getHeight());
      // Die Statusleiste
      status = new JPanel();
      status.setBackground(Color.red);
      add(status, BorderLayout.SOUTH);
      statusInfo = new JLabel("Keine Karte geöffnet");
      statusInfo.setDoubleBuffered(true);
      status.add(statusInfo);
      statusbar = new JProgressBar();
      statusbar.setVisible(false);
      status.add(statusbar);
      // Fenster erstellen
      frame = new JFrame();
      frame.setPreferredSize(new Dimension(width, height));
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setResizable(false);
      frame.setTitle("Map-Editor V. 1.1");
      frame.getContentPane().add(this);
      frame.pack();
      frame.setVisible(true);

      frame.setJMenuBar(menu);
   }
}

class MapPanel extends JPanel
{
   public void paintComponent(Graphics g) {
      super.paintComponent(g);
      //g.drawRect((int) display.getX(), (int) display.getY(), (int) display.getWidth(), (int) display.getHeight());
      g.drawString("Hello", 20, 20);
   }
}
 

Dagobert

Bekanntes Mitglied
Da ich momentarn wenig Zeit habe und mit Klausuren beschäftigt bin geht das gerade mal mehr oder weniger sehr schleppend vorran.
Ich habe jetzt versucht das Karte zeichnen in eine JPanel auszulagern und habe sie ins Center des BorderLayout gestellt:
Code:
// Dia Hauptkarte
		kartenBereich = new JPanel(){
			public void paintComponents(Graphics g) {
				super.paintComponents(g);
				System.out.println("Karte Zeichnen");
				g.setColor(Color.black);
				g.drawString("test", 10, 10);
				
				Tile temp;
				
				// Alle Tiles zeichnen, die im sichtbaren Bereich liegen
				for (int i = 0; i < setTiles.size(); i++) {
					temp = setTiles.get(i);
					if (temp.intersects(display)){
						g.drawImage(availableTiles.get(temp).getCurrentImage(), (int) (temp.getX()-display.getX()),(int) (temp.getY()-display.getY()), (int) temp.getWidth(), (int) temp.getHeight(), this);
					}
				}
				
				if(currentTile != null){
					g.drawImage(availableTiles.get(currentTile).getCurrentImage(), (int) (currentTile.getX()),(int) (currentTile.getY()), (int) currentTile.getWidth(), (int) currentTile.getHeight(), this);
					g.drawRect((int) (currentTile.getX()),(int) (currentTile.getY()), (int) currentTile.getWidth(), (int) currentTile.getHeight());
				}
				g.drawRect((int) display.getX(), (int) display.getY(), (int) display.getWidth(), (int) display.getHeight());
			}};
		
		kartenBereich.setBackground(Color.pink);
		add(kartenBereich, BorderLayout.CENTER);
		System.out.println(kartenBereich.getSize());
Die Zeichnenmethode wird auch aufgerufen, jedoch sehe ich den "test"-String nicht.
Und wie kann ich herrausfinden welche Größe das JPanel hat, denn wenn ich getSize aufrufe bekomme ich nur 0 herraus, aber ich brauche die größe des Kastens

mfg. Dagobert
 

Dagobert

Bekanntes Mitglied
ok hab ich gemacht --> hat aber leider nicht viel gebracht :(

aber mein größeres Problem ist erstmal wie komme ich an die größe des JPanels raus?

mfg. Dagobert
 

Fu3L

Top Contributor
Dagobert hat gesagt.:
ok hab ich gemacht --> hat aber leider nicht viel gebracht :(

aber mein größeres Problem ist erstmal wie komme ich an die größe des JPanels raus?

mfg. Dagobert

panel.getWidth()
panel.getHeight()

Bei mir funktioniert das...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Isometrischer KartenEditor mit Animierten Objekte Spiele- und Multimedia-Programmierung 3
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
C Plugin Problem Spiele- und Multimedia-Programmierung 2
J JLayer Problem Spiele- und Multimedia-Programmierung 1
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
C AutoClicker Problem Spiele- und Multimedia-Programmierung 2
S OOP Logik Problem Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
V Problem mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
W Generelles Problem: Entscheidungsfindung Spiele- und Multimedia-Programmierung 4
T Problem bei Kollisionsabfrage Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Sound Problem Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Problem bei der GUI - Zu viele Spielbretter Spiele- und Multimedia-Programmierung 2
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
0 Boxen übereinander stapelt Problem Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
R 2D platformer - enemy damage -> TIMER PROBLEM Spiele- und Multimedia-Programmierung 3
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
K Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 3
Y Problem mit repaint() in run() Spiele- und Multimedia-Programmierung 2
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
T Problem mit Kollisionsabfrage der NPC Spiele- und Multimedia-Programmierung 1
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
TheSorm Problem mit 2 classen NullPointerException Spiele- und Multimedia-Programmierung 1
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
N Problem in der Main.class Spiele- und Multimedia-Programmierung 1
J Blöcke, Hitboxen, Koolisionsabfrage - Problem Spiele- und Multimedia-Programmierung 8
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
C Nxt Duell Problem Spiele- und Multimedia-Programmierung 4
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
ruerob Problem bei Fade-Out von Sounds Spiele- und Multimedia-Programmierung 3
L [Slick2D] Problem bei Speicherfreigabe Spiele- und Multimedia-Programmierung 2
M Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 22
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
J Problem bei pixelgenauer Kollisionsabfrage Spiele- und Multimedia-Programmierung 10
F Problem mit dem Abspielen von byte[] (Audioprogrammierung) Spiele- und Multimedia-Programmierung 2
C Problem mit Abspielen von Audio-Dateien Spiele- und Multimedia-Programmierung 3
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
R StringIndexOutOfBoundsException - Problem Spiele- und Multimedia-Programmierung 2
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
J Problem mit Threads Spiele- und Multimedia-Programmierung 8
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Fu3L Problem mit 3D Noise Spiele- und Multimedia-Programmierung 4
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
T Problem bei LinkedList / JPanel Spiele- und Multimedia-Programmierung 4
T Problem mit ClassLoader und LWJGL Spiele- und Multimedia-Programmierung 5
M Scrolling Repaint Problem Spiele- und Multimedia-Programmierung 2
Samake03 [Problem] layeredPane bzw. Viewport Spiele- und Multimedia-Programmierung 3
Helgon glTexParameter / glTexImage2D Problem Spiele- und Multimedia-Programmierung 11
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
M Problem mit Gameserver / Datensynchronisation Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
X Geometry Wars Clone Problem Spiele- und Multimedia-Programmierung 4
H Problem mit JMonkeyEngine3 und OgreXML Spiele- und Multimedia-Programmierung 3
D [JOGL 2.0] Kleines Problem mit freier Flugsteuerung Spiele- und Multimedia-Programmierung 3
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
U [JOGL 1.1.1a]Kleines Problem mit Text Overlays: Spiele- und Multimedia-Programmierung 19
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
M Performance Problem bei BufferedImage Spiele- und Multimedia-Programmierung 7
T Problem mit Speicherverbrauch Spiele- und Multimedia-Programmierung 5
S Programmstruktur Problem! Spiele- und Multimedia-Programmierung 8
BattleMaster246 Problem mit Jogl Spiele- und Multimedia-Programmierung 14
C MP3 Handler-Problem Spiele- und Multimedia-Programmierung 13
C [gelöst] MP3-Codec-Problem Spiele- und Multimedia-Programmierung 2
K Schiebepuzzle Array Zufallszahlen Problem Spiele- und Multimedia-Programmierung 8
J Java 3D Problem Spiele- und Multimedia-Programmierung 2
G Eclipse Problem mit Java3d Spiele- und Multimedia-Programmierung 3
H Repaint-Problem mit Quaxlis Tutorial Spiele- und Multimedia-Programmierung 2
C Java Sound API Clip.Close() Problem Spiele- und Multimedia-Programmierung 1
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben