JPanel wird nicht gezeichnet

kurm_de

Mitglied
Hallo zusammen,


ich habe ein kleines Problem mit dem laden eines Bildes und einem Button in meinem Applet.

Mit unten stehenden Code wird das Bild und ein TextField und ein Button geladen, aber wenn ich das Applet starte erscheint erstmal nur das Textfeld.

Das Bild und der Button werden erst angezeigt, wenn:
- ich den Browser minimiere und dann wieder maximiere.
- ich über den nicht sichbaren Button gehe und klicke.
- ich mitten in das nicht sichtbare Bild klicke.



Ich hoffe Ihr könnt mir helfen das Problem zu verstehen und zu lösen.
Vieleicht habe ich nur was in dem Code vergessen.
Oder liegt es an dem Browser(iExplorer 8) ?




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


public class swmaps extends JApplet implements ActionListener, MouseListener {

	int x;
	int y;
	String z;
	

	JTextField feld;
	JButton button;


	public void init(){
	
		
		JPanel p = new JPanel();

		button = new JButton("finde...");
		button.addActionListener(this);

		feld = new JTextField(5);
		JLabel label = new JLabel();
		label.setText("Gebäude Nr.");

		
	
		karte k = new karte();
		k.addMouseListener(this);

		p.add(label);
		p.add(feld);
		p.add(button);


		add(BorderLayout.CENTER,k);
		add(BorderLayout.NORTH,p);
		
		repaint();
		

	}



	public void actionPerformed(ActionEvent event){
		z=feld.getText();
		System.out.println(z+"#");
		
		if(z.equals("165")){
			System.out.println(z+"=");		
			x=344;
			y=224;
		}else{
			x=0;
			y=0;
		}

		
		repaint();
	}



	public void mouseClicked(MouseEvent e) {
      		x=e.getX();
		y=e.getY();
		z=x+" / "+y;
		repaint();
	}
	public void mouseExited(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
	public void mousePressed(MouseEvent e) {}





	class karte extends JPanel{

		public void paintComponent(Graphics g){
		
			URL imgURL = getClass().getResource("SU1000448.png");
			Image image = new ImageIcon(imgURL).getImage();
			g.drawImage(image,0,0,this);
			

			imgURL = getClass().getResource("inadel.png");
			Image Inadel = new ImageIcon(imgURL).getImage();

			g.drawString(z,x,y);

			if(x!=0){
				g.drawImage(Inadel,x,y,this);	
			}
			
			

		}

		
	}

}



viele Grüße
kurm_de
 

Anhänge

  • 01.jpg
    01.jpg
    58,6 KB · Aufrufe: 34
  • 02.jpg
    02.jpg
    106,5 KB · Aufrufe: 25
Im Aktuellen Code lädst du bei jedem paintComponent() das Image neu.
In die Paint-Methoden gehört nur der Zeichenprozess an sich!

Java:
class karte extends JPanel{

Image image;
Image Inadel;

       public karte(){
            URL imgURL = getClass().getResource("SU1000448.png");
            image = new ImageIcon(imgURL).getImage();
            imgURL = getClass().getResource("inadel.png");            
            Inadel = new ImageIcon(imgURL).getImage();
        }

        public void paintComponent(Graphics g){
 
            g.drawImage(image,0,0,this);
            g.drawString(z,x,y);
 
            if(x!=0){
                g.drawImage(Inadel,x,y,this);   
            }          
        }    
    }

PS.: Namenskonventionen sind was feines 😉
 
danke,

mir war das noch nicht ganz klar mit den Paint-Methoden und dem Zeichenprozess.

Ich habe das jetzt geändert.

Nun habe ich das Applet zu Hause mit FireFox laufen lassen, aber das Problem besteht immer noch 🙁



Viele Grüße

kurm_de
 

Zurück
Oben