Panels aktualisieren

Status
Nicht offen für weitere Antworten.
S

Scotty

Gast
Servus!
Also, ich hab folgendes Problem: Ich hab versucht, ein Panel zu einem Frame zu adden, welches ein BufferedImage enthällt, dass sich bei Tastatureingaben ändert. Dementsprechend soll sich auch der auf dem Bildschirm angezeigte Inhalt des Panels ändern. Aber irgendwie funktioniert der KeyListener bei dem Panel nicht, beim Frame jedoch schon. Der MouseListener funktioniert auch beim Panel einwandfrei, allerdings wird trotz der repaint()-Anweisung der neue Inhalt nich auf dem Panel angezeigt. Wie wäre das Problem zu lösen? Könnte ich statt dem Panel vielleicht einen anderen Component nutzen, etwa InternalFrame oder Canvas.

Mal noch was anderes: seit einiger Zeit werden bei mir Brüche, die kleiner als 1 sind (z.B. 1/32) immer mit dem Wert 0 zurückgegeben. Ich konnte das Problem bisher umgehen, aber normal ist das doch auch nicht, oder?

MfG
Scotty
 

Wildcard

Top Contributor
Scotty hat gesagt.:
Aber irgendwie funktioniert der KeyListener bei dem Panel nicht, beim Frame jedoch schon.
Ich denke mal du hast dem Panel nicht den Focus gegeben?
Scotty hat gesagt.:
Mal noch was anderes: seit einiger Zeit werden bei mir Brüche, die kleiner als 1 sind (z.B. 1/32) immer mit dem Wert 0 zurückgegeben. Ich konnte das Problem bisher umgehen, aber normal ist das doch auch nicht, oder?
Würde mich sehr überraschen wenn das jemals anders war :wink:
Code:
1.0/32.0
 
S

Scotty

Gast
Ke, also ich hab den Focus zum Panel und zum Frame geadded. Beim Frame funzt alles wunderbar, aber beim Panel wieder nicht. Ich versteh auch nicht so ganz, wie ich mit dem Focus die Tastatureingaben verarbeiten kann. Theoretisch müssten ja die Eingaben bearbeitet werden, wenn das Panel quasi anvisiert wurde.

Hehe, danke für den Tipp mit den Kommas! Man sieht oft den Wald vor Bäumen nicht. :roll:
 

Wildcard

Top Contributor
Wenn du mir jetzt noch den relevanten Code zeigst kann ich dir bestimmt auch sagen was du falsch machst...
 
S

Scotty

Gast
Code:
class window extends JFrame{
                
                /*...*/

                public window(){
                                /*...*/
                                getContentPane().add(new myPanel());}}

class myPanel extends JPanel implements KeyListener,MouseListener,FocusListener{

                /*...*/

	public myPanel(){
		super(true);
		setVisible(true);
		addMouseListener(this);
		addKeyListener(this);
		addFocusListener(this);
		repaint();}
		
	public void focusGained(
		FocusEvent e){}
		
	public void focusLost(
		FocusEvent e){}

                public void keyTyped(
		KeyEvent e){
			char c=e.getKeyChar();
			if(c=='x'){repaint();}
	
	/*...
                restliche key- & mouseevents
                ...*/

                public void paint(
                                Graphics g){
                                                /*neues BI erzeugen und zeichnen*/}}
 

Wildcard

Top Contributor
1. Klassennamen werden IMMER groß geschrieben.
2. für was der FocusListener?
3. Bei Swing in der paintComponent zeichnen
4. diesem Code nach hat das Panel mit Sicherheit nicht den Fokus!
5. ist vieleicht besser wenn du mir mehr zeigst, da sind bestimmt noch ein paar Fehler drin :wink:
 
S

Scotty

Gast
der Compiler hat sich bei mir noch nie beschwert, warum auch?
der focuslistener erfüllt sozusagen keinen zweck. ich hab das eben mit dem 'Focus' verwechselt. was uns zu 4. bringt: wie zentriere ich den focus auf einen component?
paintComponent also, naja, ich hab mich schon gewundert, warum ich immer erst die repaint aufrufen musste, bis da was passiert ist.
hehe, so lange der compiler nicht meckert geht das schon in ordnung. aber was soll man machen, ich hab mir alles mühsam aus irgendwelchen tutorials zusammenstückeln müssen, da kann das schon vorkommen.
 

Wildcard

Top Contributor
Scotty hat gesagt.:
der Compiler hat sich bei mir noch nie beschwert, warum auch?
der focuslistener erfüllt sozusagen keinen zweck. ich hab das eben mit dem 'Focus' verwechselt. was uns zu 4. bringt: wie zentriere ich den focus auf einen component?
paintComponent also, naja, ich hab mich schon gewundert, warum ich immer erst die repaint aufrufen musste, bis da was passiert ist.
hehe, so lange der compiler nicht meckert geht das schon in ordnung. aber was soll man machen, ich hab mir alles mühsam aus irgendwelchen tutorials zusammenstückeln müssen, da kann das schon vorkommen.
Nicht alles was syntaktisch erlaub ist ist auch richtig! Es gibt Java-Coding-Conventions(in den FAQ) aus die man
sich aus gutem Grund halten soll.
den Fokus bekommt man mit requestFocus()
auch wenn du die paintComponent benutzt wirst du repaint brauchen!
 
G

Guest

Gast
ok, da die tastatureingaben nun immer noch nicht bearbeitet werden, hier noch mal der komplette code des panels.
bei mouseclicked funktioniert's, aber bei keytyped nicht.

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;

class Panel3D
extends JPanel
implements KeyListener,MouseListener{
	Image dbImage;
	Graphics dbGraphics;

	public Panel3D(){
		super(true);
		setVisible(true);
		addMouseListener(this);
		addKeyListener(this);
		requestFocus();}
		
	public void mousePressed(
		MouseEvent e){}
		
	public void mouseTyped(
		MouseEvent e){}
		
	public void mouseReleased(
		MouseEvent e){}
	
	public void mouseExited(
		MouseEvent e){}
		
	public void mouseEntered(
		MouseEvent e){}
		
	public void mouseClicked(
		MouseEvent e){
			m=m.rotate(new vector(1,0,0));repaint();System.out.println("click");}
	
	public void keyTyped(
		KeyEvent e){
			char c=e.getKeyChar();
			if(c=='w'){m=m.rotate(new vector(1,0,0));
			if(c=='s'){m=m.rotate(new vector(-1,0,0));}
			if(c=='a'){m=m.rotate(new vector(0,-1,0));}
			if(c=='d'){m=m.rotate(new vector(0,1,0));}
			if(c=='q'){m=m.rotate(new vector(0,0,-1));}
			if(c=='e'){m=m.rotate(new vector(0,0,1));}
			if(c=='ö'){m=m.add(new vector(0,1,0));}
			if(c=='p'){m=m.add(new vector(0,-1,0));}
			if(c=='l'){m=m.add(new vector(-1,0,0));}
			if(c=='ä'){m=m.add(new vector(1,0,0));}
			if(c=='o'){m=m.add(new vector(0,0,-1));}
			if(c=='ü'){m=m.add(new vector(0,0,1));}
			if(c=='1'){mode=0;}
			if(c=='2'){mode=1;}
         repaint();}
		
	public void keyPressed(
		KeyEvent e){}
		
	public void keyReleased(
		KeyEvent e){}		
		
	image map=new image(System.getProperty("user.dir")+new String("/map1.bmp"));
	matrix m=new matrix();
	int mode=0;
			
	public void update(
		Graphics graph){
			if(dbImage==null){
				dbImage=createImage(this.getSize().width,this.getSize().height);
				dbGraphics=dbImage.getGraphics();}
			dbGraphics.setColor(new Color(255,255,255));
			dbGraphics.fillRect(0,0,this.getSize().width,this.getSize().height);
			dbGraphics.setColor(getForeground());
			paint(dbGraphics);
			graph.drawImage(dbImage,0,0,this);}
		
	public void paintComponent(
		Graphics g){
  		surface s=new surface(m);
  		s=s.rgbscale(map);
  		g.drawImage(s.toBufferedImage(
  			new BufferedImage(
  				getSize().width,
  				getSize().height,
  					BufferedImage.TYPE_INT_RGB),
  			map,
  			mode),0,0,this);}}
 

Wildcard

Top Contributor
da dein code absolut unlesbar ist (deshalb in Zukunft die conventions beachten) hab ich dir ein Beispiel gemacht:
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;


/**
 * TODO short description for BeispielFrame.
 * 


 * Long description for BeispielFrame.
 * 
 * @author Wildcard
 * @version $Revision: $
 */
public class BeispielFrame extends JFrame
{
    public BeispielFrame()
    {
        setSize(500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        BeispielPanel panel = new BeispielPanel();
        panel.setSize(300,300);
        add(panel);
        repaint();
    }
    
    public static void main(String args[])
    {
        BeispielFrame frame = new BeispielFrame();
        frame.setVisible(true);
    }
}

class BeispielPanel extends JPanel
{
    
    private boolean blau;
    
    public BeispielPanel()
    {
        setFocusable(true);
        requestFocus();
        addKeyListener(new KeyListener()
        {
            public void keyTyped(KeyEvent e)
            {
                // TODO Auto-generated method stub
                blau=!blau;
                repaint();
            }

            public void keyPressed(KeyEvent e)
            {
                // TODO Auto-generated method stub

            }

            public void keyReleased(KeyEvent e)
            {
                // TODO Auto-generated method stub

            }
        });
        
        //wenn man nicht alle MouseListener MEthoden braucht bietet sich
        //ein MouseAdapter an
        addMouseListener(new MouseAdapter()
        {
            public void mousePressed(MouseEvent e)
            {
                // TODO Auto-generated method stub

            }
        });
    }
    
    protected void paintComponent(Graphics g)
    {
        if(blau)
            g.setColor(Color.BLUE);
        else
            g.setColor(Color.RED);
        g.fillRect(0,0,300,300);
    }
}
 
S

Scotty

Gast
ok, es lag an setFocusable(true). danke. :D
hmm, ich komm mit meinem code ganz gut klar, aber trotzdem, wo kann ich denn diese conventions mal einsehen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
I GUI, das verschiedene Panels hat (Von Seite zu Seite navigieren) AWT, Swing, JavaFX & SWT 7
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
T Swing Bug: mehrfache Panels bei Mouseover? AWT, Swing, JavaFX & SWT 11
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
R Swing panels nebeneinander mit BoxLayout.X_AXIS AWT, Swing, JavaFX & SWT 4
P Swing Panels Wechseln AWT, Swing, JavaFX & SWT 9
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
V AWT Panels überlappen AWT, Swing, JavaFX & SWT 1
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
U Swing Panels im Contentpane durchschalten AWT, Swing, JavaFX & SWT 1
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
S Swing Plätze von 2 panels vertauschen AWT, Swing, JavaFX & SWT 4
T Panels mit Button verbinden AWT, Swing, JavaFX & SWT 3
F Swing Wie verwalte ich meine Panels richtig? AWT, Swing, JavaFX & SWT 2
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
D Stapelung von Panels AWT, Swing, JavaFX & SWT 6
V Swing MouseEvents bei gestapelten Panels AWT, Swing, JavaFX & SWT 2
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
kodela Teil eines Panels als Graphik speichern AWT, Swing, JavaFX & SWT 3
Kenan89 LayoutManager MigLayout Positionierung von Panels AWT, Swing, JavaFX & SWT 4
A Panels in JavaFX zur Laufzeit erzeugen AWT, Swing, JavaFX & SWT 5
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
J Problem mit der Höhe eines Panels AWT, Swing, JavaFX & SWT 11
M Swing JTabbedPane Panels deaktivieren AWT, Swing, JavaFX & SWT 2
S Swing (Nicht) Vergrößern von Panels AWT, Swing, JavaFX & SWT 3
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
B LayoutManager Zeilenweise Anordnung von Panels AWT, Swing, JavaFX & SWT 19
B Panels wechseln auf Knopfdruck AWT, Swing, JavaFX & SWT 17
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
J LayoutManager Panels übereinander AWT, Swing, JavaFX & SWT 3
P Von einem Panel auf die Objekte des anderen Panels zugreifen AWT, Swing, JavaFX & SWT 3
C Aufklappbare Panels AWT, Swing, JavaFX & SWT 2
D Panels Dynamisch zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 2
D Vererbung von Panels AWT, Swing, JavaFX & SWT 8
E Wie Breite und Höhe eines Panels festlegen? AWT, Swing, JavaFX & SWT 5
B Panels stapeln, geht das? AWT, Swing, JavaFX & SWT 7
I 2 Panels übereinander, 1 transparent AWT, Swing, JavaFX & SWT 2
S GridBagLayout Panels AWT, Swing, JavaFX & SWT 2
W Panels vertikal anordnen AWT, Swing, JavaFX & SWT 10
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
F Abschaltbare Panels AWT, Swing, JavaFX & SWT 5
aze Layout auf Teil eines Panels anwenden AWT, Swing, JavaFX & SWT 5
M Swing Alle Elemente eines Panels? AWT, Swing, JavaFX & SWT 9
I Swing Positionieren von Panels mit layoutManager AWT, Swing, JavaFX & SWT 6
B Java Grafiken an bestimmter Positon des Panels anzeigen AWT, Swing, JavaFX & SWT 6
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
K Zwei Panels zentriert anordnen AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
S Buttons, Panels etc. zu einer Teilkomponente hinzufügen AWT, Swing, JavaFX & SWT 5
S mehere panels übereinander AWT, Swing, JavaFX & SWT 2
Z Swing Gif's in panels einfügen AWT, Swing, JavaFX & SWT 11
N Überschneidung von Panels umgehen AWT, Swing, JavaFX & SWT 3
D java.lang.IllegalArgumentException beim Darstellen eines Panels AWT, Swing, JavaFX & SWT 7
T Border eines Panels nicht an der rechten Kante anzeigen AWT, Swing, JavaFX & SWT 7
F name des panels in der ein button liegt rausfinden AWT, Swing, JavaFX & SWT 10
R AWT: Aufteilung mit Panels? AWT, Swing, JavaFX & SWT 2
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
G Ein Frame mit mehreren austauschbaren Panels AWT, Swing, JavaFX & SWT 3
I Applet mit Panels (so richtig, gehts besser?) AWT, Swing, JavaFX & SWT 3
G designfrage zu 2 panels AWT, Swing, JavaFX & SWT 2
hdi zeitgleiches fokusieren von zwei panels AWT, Swing, JavaFX & SWT 2
G 2 Panels, 2 Listener, 1 Problem AWT, Swing, JavaFX & SWT 2
G Im applet auf panels zeichnen AWT, Swing, JavaFX & SWT 9
G Im Applet Panels anzeigen lassen AWT, Swing, JavaFX & SWT 2
G Editierbarkeit aller Komponenten eines Panels AWT, Swing, JavaFX & SWT 5
R Kleine Panels auf einem großen Panel frei platzieren AWT, Swing, JavaFX & SWT 11
G Remove Panels von JFrame AWT, Swing, JavaFX & SWT 5
M Ausrichtung eines Panels AWT, Swing, JavaFX & SWT 7
H Frames oder Panels für mehrere Ansichten? AWT, Swing, JavaFX & SWT 4
M Problem mit Cursor für Panels AWT, Swing, JavaFX & SWT 4
Kidao Mehrer Panels, mit Buttons in einem Frame abwechselnd laden? AWT, Swing, JavaFX & SWT 3
M Hallo Herr Uhres, Frage zu DND_Demo: Ausrichten der Panels:) AWT, Swing, JavaFX & SWT 4
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
O eine Frage zu Panels AWT, Swing, JavaFX & SWT 10
M Problem bei Repaint von Panels AWT, Swing, JavaFX & SWT 2
M Größe des Panels ändern? AWT, Swing, JavaFX & SWT 3
O haben panels von anfang an einen dummen rand? AWT, Swing, JavaFX & SWT 19
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M JTree und Anzeige des entsprechenden Panels AWT, Swing, JavaFX & SWT 5
M JList mit unbestimmter Anzahl Panels füllen AWT, Swing, JavaFX & SWT 4
K 2 Panels und Layouts AWT, Swing, JavaFX & SWT 2
K abstände zwischen Panels? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben