Refresh bei MouseDragged funktioniert nicht

Status
Nicht offen für weitere Antworten.
D

dewenni

Gast
Hallo,
ich bin noch Anfänger in Java, kenne mich aber in C,C++ ganz gut aus.
Ich habe folgendes Applet erstellt:

T_Applet.htm

Die roten Linien lassen sich mit der Mouse verschieben. Und da ist auch schon das Problem.
Eigentlich sollte das Diagramm während des Schiebens ständig neu gezeichnet werden.
Dies geschieht allerdings erst nach dem MouseRelease.

Der Aufbau ist folgendermaßen. Ich habe für jedes Diagramm eine eigene Klasse geschrieben, die das Zeichnen übernimmt und JPanel erbt.
In der "Hauptklasse" (T_Applet.java) erzeuge ich von dieser Klasse ein Objekt und füge es dann per "add(u_p)" in ein GridBagLayout ein. Die Methode add() benutze ich auch später zum Auffrischen des Diagrammes. Dies funktioniert auch prinzipiell, nur nicht während des MouseDragged sondern erst nach dem Release.

Kann mir vielleicht einer auf die Sprünge helfen was ich da falsch mache?
Ich wäre ich dankbar.

Hier noch der Quellcode der T_Applet.java

Code:
 package tiefsetsteller;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.awt.Color;

public class T_Applet extends JApplet 
implements MouseListener, MouseMotionListener 
{
	
  //----Variablen------------------------------------- 
	u_panel u_p = new u_panel();
	pwm_panel pwm_p = new pwm_panel();
	i_panel i_p = new i_panel();
	ap_panel ap_p = new ap_panel();
	 
	ImageIcon schaltbild = new ImageIcon(getClass().getResource("tiefsetsteller.gif"));
  
	JLabel label = new JLabel(schaltbild);
	  
  
	
		
	// Variablen für MouseEvents
	static int x_mouse = 0;
	static int y_mouse = 0;

	// Startvariablen für MouseEvents
	static int pwm_x_t = 20;
	static int pwm_y_t = 0;
	static int u_steuer_x=20;
	static int u_steuer_y=60;

	static boolean linie_run = false;
	static boolean u_steuer_line = false;
	
	


 //##### Init ###############################################################
  public void init() {

	  	
		pwm_p.addMouseListener(this);
		pwm_p.addMouseMotionListener(this);
	  
		u_p.addMouseListener(this);
		u_p.addMouseMotionListener(this);
	  
	  	//Container für Hintergrund
	  	Container container = getContentPane();
	    container.setBackground(Color.white);
	  	
	 	//Tabelle mit 2Spalten und je 3Zeilen  
	  	GridBagLayout gbl=new GridBagLayout();
		setLayout(gbl);
		GridBagConstraints gbc=new GridBagConstraints();
	
			               
		gbc.fill=GridBagConstraints.BOTH;		
		gbc.insets = new Insets(5,5,5,5);		    // Abstände 
		gbc.weightx = 0.0;
		gbc.weighty = 0.0;

	
		//Objekte in Tabelle einfügen
		gbc.anchor = gbc.WEST;
		gbc.gridx = 0;  							
		gbc.gridy = 0; 							  
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbl.setConstraints(u_p, gbc);
		add(u_p);
		
		gbc.anchor = gbc.WEST;
		gbc.gridx=0; 
		gbc.gridy=1;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbl.setConstraints(pwm_p, gbc);
		add(pwm_p);
		
		gbc.anchor = gbc.WEST;
		gbc.gridx=0; 
		gbc.gridy=2;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbl.setConstraints(i_p, gbc);
		add(i_p);
		
		gbc.anchor = gbc.EAST;		
		gbc.gridx=1; 
		gbc.gridy=0;
		gbc.gridheight= 2;
		gbc.gridwidth = 1;
		gbl.setConstraints(label, gbc);
		add(label);
	
		gbc.gridx=1; 
		gbc.gridy=2;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbl.setConstraints(ap_p, gbc);
		add(ap_p);
		

	
  }
   


 
//##### MOUSE-EVENTS ##########################################################
  public void mousePressed(MouseEvent e){
		x_mouse = e.getX();
		y_mouse = e.getY();
	
		// Abdrage auf PWM_time
		if(((x_mouse >= pwm_x_t-5)&&(x_mouse <= pwm_x_t+5))&&((y_mouse >= pwm_y_t+0) && (y_mouse <= pwm_y_t+400)))
			linie_run = true;	
		else 
			linie_run = false;
		
		// Abdrage auf u_steuer
		if(((x_mouse >= u_steuer_x)&&(x_mouse <= u_steuer_x+400))&&((y_mouse >= u_steuer_y-5) && (y_mouse <= u_steuer_y+5)))
			u_steuer_line = true;	
		else 
			u_steuer_line = false;
  }
  
  
  public void mouseDragged(MouseEvent e){
	  	x_mouse = e.getX();
		y_mouse = e.getY();
		
		
		//gültigen Bereich für PWM_time abfragen			
		if(linie_run){
			if ((x_mouse >= 20) &&(x_mouse <= 400)){
				pwm_x_t = x_mouse;
				}
			else{		
				if(x_mouse < 20)
				pwm_x_t = 20;
				else
				pwm_x_t = 399;
				}
		
			add(pwm_p);	
		}		
			
		//gültigen Bereich für u_steuer abfragen			
		if(u_steuer_line){
			if ((y_mouse >= 50) &&(y_mouse <= 150)){
				u_steuer_y = y_mouse;
				}
			else{		
				if(y_mouse < 50)
				u_steuer_y = 50;
				else
				u_steuer_y = 150;
				}
		
			add(u_p);
			add(pwm_p);
		}	
		

} 

//	 Folgende Events werden nicht benötigt müssen aber vorhanden sein!
	public void mouseReleased(MouseEvent e){}
	public void mouseClicked(MouseEvent e){}
	public void mouseEntered(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
	public void mouseMoved(MouseEvent e){}

	
	
	
	

  
 

//	---------------------------------------------------------------------------------------------------------------  						

	/*
  
  
//##### Start ###############################################################  
  public void start() { 
  }
  

  //##### Stop ################################################################
  public void stop() {
    // stoppe Ausführung
  }
  

  //##### destroy #############################################################
  public void destroy() {
    // initialisierte Ressourcen freigeben
  }
*/
 
}
 
E

ErikW

Gast
Warum sind da alle Variabeln static!? mach die erstaml alle private oder public aber nicht static! das ist zu unsicher und kann ganz schnell böse Fehler hervorufen.
 
G

Guest

Gast
OK aber das geht so ohne weiteres nicht bei allen Variablen.
pwm_x , pwm_y und u_steuer_y benutze ich noch in anderen Klassen die sich in eigenen .java Dateien befinden.
Alle .java Dateien habe ich aber dem Packet tiefsetsteller zugeordnet.

Der Zugriff in der in der "u_panel.java" bzw. "class u_panel" erfolgt dann so:
Code:
tiefsetsteller.T_Applet.u_steuer_y

Den Rest habe ich auf private geändert
Code:
// Variablen für MouseEvents
	private int x_mouse = 0;
	private int y_mouse = 0;

	// Startvariablen für MouseEvents
	static int pwm_x_t = 20;
	static int pwm_y_t = 0;
	private int u_steuer_x=20;
	static int u_steuer_y=60;

	private boolean linie_run = false;
	private boolean u_steuer_line = false;

Ich werde mal schauen ob ich das vielleicht noch anders lösen kann.
Hast du vielleicht noch einen Tipp zu meinem ursprünglichen Problem?
Muss ich vielleicht mit Threads arbeiten?

Danke

Gruß Sven
 

The_S

Top Contributor
Uah, is ja schrecklich. Lies mal ein Buch über OOP ...

Auf Variablen aus anderen Klassen greift man über getter und setter zu :?
 
D

dewenni

Gast
Das ist mir im Grunde klar das man das mit get und set Methoden macht. Es hat aber in meinem Fall nicht so recht funktioniert. Deswegen bin ich auf Static gegangen. Ich erzeuge ja auch nur ein einziges Objekt der jeweiligen Klasse.
Aber gut ich werde das nochmal überdenken und vielleicht anders lösen.

Mein ursprüngliches Problem habe ich gelöst indem ich nicht das JPanel erneut über add lade sondern einfach .repaint() aufrufe!

Trotzdem Danke!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Monitor Refresh-Rate Java Basics - Anfänger-Themen 8
R Card Layout refresh nach Änderung Java Basics - Anfänger-Themen 1
R Einfaches refresh während runtime Java Basics - Anfänger-Themen 4
M Refresh JTextArea Java Basics - Anfänger-Themen 12
G Methoden regelmäsiger Refresh einer Methode Java Basics - Anfänger-Themen 2
C Java Refresh Java Basics - Anfänger-Themen 6
G JButton + IconImage. refresh? Java Basics - Anfänger-Themen 5
G Problem mit Refresh von JTree Java Basics - Anfänger-Themen 11
B Java - Anzeige beim Refresh weiss Java Basics - Anfänger-Themen 11
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
S Wie implementiere ich MouseDragged richtig Java Basics - Anfänger-Themen 7
G mouseDragged auf Jlabel Java Basics - Anfänger-Themen 2
R mit MouseDragged Rechteck verschieben. Java Basics - Anfänger-Themen 2
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
F FileCreation - PrintWriter funktioniert nicht... Java Basics - Anfänger-Themen 1
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben