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
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
}
*/
}