Hallo zusammen,
irgendwo in diesem funktionieren Codefragment ist ein Denkfehler drin:
Grundgedanke des Konstrukts ist folgender:
Ich will den jButton bei gedrückter Maustaste verschieben. Dabei soll sich die Position vom Mauszeiger im jButton während des Bewegens nicht ändern.
Die Zeilen 81 bis 92 sind für den Verschiebebefehl in Zeile 95 zuständig. Die if - else Kontrollen habe ich eingebaut, weil sich die Mauskoordinaten im jButton, während des verschiebens, mal im positiven und / oder im negativen Bereich bewegen.
Ich habe auch schon versucht, die Mausposition mit statischen Variablen festzuhalten. Das hat auch nicht eiter gebracht, außer das sich jButton an der linken, oberen Ecke am Mauszeiger ausrichtete.
PS: Durch die Zeilen 101 bis 105 könnt ihr den jButton wieder vernüftig im Fenster positionieren.
Ich hoffe ihr könnt mir dabei helfen.
Rookie
irgendwo in diesem funktionieren Codefragment ist ein Denkfehler drin:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class koordinaten extends JFrame {
// Anfang Attribute
Container cp;
private JButton jButton1 = new JButton();
private JLabel jLabely = new JLabel();
private JLabel jLabelx = new JLabel();
// Ende Attribute
public koordinaten(String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 678;
int frameHeight = 346;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
jLabelx.setBounds(8, 8, 654, 16);
jLabelx.setText("Waagerecht: ");
jLabelx.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabelx);
jLabely.setBounds(2, 31, 665, 14);
jLabely.setText("Senkrecht: ");
jLabely.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
cp.add(jLabely);
jButton1.setBounds(256, 116, 41, 41);
jButton1.setText("jButton1");
jButton1.setMargin(new Insets(2, 2, 2, 2));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1_ActionPerformed(evt);
}
});
jButton1.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
jButton1_MouseDragged(evt);
}
});
jButton1.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent evt) {
jButton1_MouseMoved(evt);
}
});
cp.add(jButton1);
cp.addMouseMotionListener(new MyMouseMotionListener());
cp.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent evt) {
koordinaten_MouseReleased(evt);
}
});
// Ende Komponenten
setResizable(false);
setVisible(true);
}
// Anfang Methoden
class MyMouseMotionListener implements MouseMotionListener {
public void mouseDragged(MouseEvent mml) {}
public void mouseMoved(MouseEvent mml) {
jLabelx.setText("Waagerecht : " + mml.getX());
jLabely.setText("Senkrecht : " + mml.getY());
}
}
public void jButton1_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}
public void jButton1_MouseDragged(MouseEvent evt) {
// TODO hier Quelltext einfügen
int xPos;
int yPos;
if (evt.getX()<1) {
xPos=(int) cp.getMousePosition().getX()+evt.getX();
}else{
xPos=(int) cp.getMousePosition().getX()-evt.getX();
}
if (evt.getY()<1 ) {
yPos=(int) cp.getMousePosition().getY()+evt.getY();
}else{
yPos=(int) cp.getMousePosition().getY()-evt.getY();
}
// jButton1.setLocation((int) cp.getMousePosition().getX()+evt.getX(),(int) cp.getMousePosition().getY()+evt.getY());
// der Button springt im Fenster bei gedrückter maustaste
jButton1.setLocation(xPos,yPos);
// je nach vorzeichen in den zeilen 85,87,90,92 unterschiedliche bewegungsmuster des buttons bei gerückter maustaste
jLabelx.setText("Waagerecht im Fenster : " + (int)cp.getMousePosition().getX() + " / im Button : " + evt.getX() );
jLabely.setText("Senkrecht im Fenster : " + (int) cp.getMousePosition().getY() + " / im Button : " + evt.getY() );
}
public void koordinaten_MouseReleased(MouseEvent evt) {
// TODO hier Quelltext einfügen
jButton1.setLocation(evt.getX(),evt.getY());
// neu plazieren des button im fenster
}
public void jButton1_MouseMoved(MouseEvent evt) {
// TODO hier Quelltext einfügen
jLabelx.setText("Waagerecht im Fenster : " + (int)cp.getMousePosition().getX() + " / im Button : " + evt.getX() );
jLabely.setText("Senkrecht im Fenster : " + (int) cp.getMousePosition().getY() + " / im Button : " + evt.getY() );
}
// Ende Methoden
public static void main(String[] args) {
new koordinaten("koordinaten");
}
}
Grundgedanke des Konstrukts ist folgender:
Ich will den jButton bei gedrückter Maustaste verschieben. Dabei soll sich die Position vom Mauszeiger im jButton während des Bewegens nicht ändern.
Die Zeilen 81 bis 92 sind für den Verschiebebefehl in Zeile 95 zuständig. Die if - else Kontrollen habe ich eingebaut, weil sich die Mauskoordinaten im jButton, während des verschiebens, mal im positiven und / oder im negativen Bereich bewegen.
Ich habe auch schon versucht, die Mausposition mit statischen Variablen festzuhalten. Das hat auch nicht eiter gebracht, außer das sich jButton an der linken, oberen Ecke am Mauszeiger ausrichtete.
PS: Durch die Zeilen 101 bis 105 könnt ihr den jButton wieder vernüftig im Fenster positionieren.
Ich hoffe ihr könnt mir dabei helfen.
Rookie