MouseMotionListener
-
hallo,
in eine JPanel ist eine Button, I will wenn man auf diesm
Button klickt verschiebet soll die Button auch mitverschoben werden
[java]
myButton.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent event)
{
System.out.println("move in Action ... ");});
[/code]aber leider tut sich nichts
wie kann ich das implementieren ???
danke
-
hallo
in einer JPanel habe ich 3 Komponnt und ich will dass man die 3 Komponent mit der Mouse verkleiner bzw vergrössern kann, dafür habe ich die
MouseMotionListener implementiert// etwa
public void mouseDragged(MouseEvent event)
{
int x= event.getX();
int y= event.getY();
comp1.setBounds(0, 0, X , y );
comp2.setBounds(0, 150, X , y );
comp3.setBounds(0, 300, X , y );
}
leider tut es nicht. wenn ich auf ein Komponent klicke dann verschibt sich aber nicht ganau wo die Mousezeiger ist und die Andere 2 Komponente bekommen einfach die falsche grössen. warum wie kann ich das lösenhat es hier mit Look an Feel zu tun ??? wenn ja wie geht es dann ??
Danke
-
ich weiß ja nicht genau wie du das mit dem vergrößern und verkleinern vor hast, aber so wie du das im Code hast, kommt es mir etwas schwedisch vor, denn die Parameter 3 und 4 von setBounds geben die Breite und Höhe der Komponente an und nicht die Koordinaten des 2. Punktes...vielleicht hilft dir ja die überlegung weiter:)
cu crass
[ Dieser Beitrag wurde am 24.06.2003 um 00:01 Uhr von crass editiert. ]
-
Wenn du so etwas machen willst darfst du nicht mit Layoutmanagern arbeiten. Außerdem musst du die Mauskoordinaten transformieren weil die Koordinaten nämlich relativ zur linken oberen Ecke des Buttons angegeben werden. Das Event-Objekt bietet so eine Methode an. Im Beispiel unten wirst du zwar sehen wie man das mit dem Verschieben der Komponente macht wirst aber gleichzeitig den Nachteil sehen mit dem MouseMotionlistener. Du musst nämlich deinen Komponenten final machen um sie der inner-class bekannt zu machen. Besser wäre die eigentliche Panelklasse zu einem MotionListener zu machen. Die könnte dann parametergesteuert arbeiten.
[java]import javax.swing.;
import java.awt.event.;public class MoveButton extends JFrame {
public MoveButton() {
super("Drag and move the Button!");
setSize(new java.awt.Dimension(600, 400));
getContentPane().setLayout(null);
final JButton btn = new JButton("Drag me!");
btn.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent event) {
event.translatePoint(btn.getX(), btn.getY());
btn.setLocation(event.getX(), event.getY());
}
});
btn.setBounds(40,40, 100,30);
getContentPane().add(btn);
setVisible(true);
}public static void main (String args[]) {
new MoveButton();
}
}[/code][ Dieser Beitrag wurde am 25.06.2003 um 17:17 Uhr von CengizS editiert. ]
-
@cengiz
mit deinem Code kann man den Button verschieben, er wollte aber glaub ich wissen wie man ne Komponente resized:
public void mouseDragged(MouseEvent me) { btn.setSize(me.getX(),me.getY()); }
(als simples Beispiel)
[ Dieser Beitrag wurde am 26.06.2003 um 00:09 Uhr von crass editiert. ]