|
You last visited: Today at 23:55
Advertisement
[Help] Java Button verschieben
Discussion on [Help] Java Button verschieben within the Java forum part of the Coders Den category.
06/15/2014, 18:21
|
#1
|
elite*gold: 57
Join Date: Feb 2011
Posts: 1,287
Received Thanks: 211
|
[Help] Java Button verschieben
Hey Leute,
ich wollte mal Anfangen so ein kleines Spiel zu programmieren, und stoze direkt auf eine Hürde  .
Ich will das ich ein Button verschieben kann mit der Maus wenn ich sie gedrückt halte. D.h das wenn ich die linke Maus Taste drücke der Button an der Stelle der Maus ist, und sich auch mit verschiebt wenn ich die maus Bewege.
Mein Quelltext aus Eclipse sieht grade so aus :
Quote:
public class Spiel extends JFrame implements MouseMotionListener
{
JButton knopp;
private int startX,startY;
public Spiel()
{
super("DasSpiel");
this.setLayout(null);
knopp = new JButton ("Knopf");
knopp.setBounds(0,0,100,100);
knopp.addMouseMotionListener(this);
this.add(knopp);
this.setBounds(0,0,1000,1000);
this.setVisible(true);
}
public static void main(String[] args)
{
Spiel test = new Spiel();
}
public void mouseDragged(MouseEvent e) {
startX = e.getX();
startY = e.getY();
knopp.setBounds(startX, startY, 100, 100);
}
public void mouseMoved(MouseEvent e) {
}
}
|
Wenn ich die Maustaste Drücke und sie bewege geht der Button zwar mit, aber nicht an der Stelle der Maus und der Button geht immer wieder nach oben Links.
Kann einer helfen ?
|
|
|
06/15/2014, 19:04
|
#2
|
elite*gold: 20
Join Date: Nov 2010
Posts: 552
Received Thanks: 350
|
Du musst dem JFrame den Listener zuteilen und nicht dem Button.
Dann kannst du dem Button einfach einen MouseListener geben und gucken ob der User den Button draggen möchte, dazu kannst du z.B einfach wenn gedrückt einen boolean auf true setzen.
|
|
|
06/15/2014, 19:13
|
#3
|
elite*gold: 57
Join Date: Feb 2011
Posts: 1,287
Received Thanks: 211
|
Meinst du
Quote:
|
JFrame.addMouseMotionListener(this);
|
? Weil das geht nicht  . Und warum bewegt sich der Button nur wenn ich auf ihn klicke und dann die Mausbewege ?
|
|
|
06/15/2014, 19:20
|
#4
|
elite*gold: 20
Join Date: Nov 2010
Posts: 552
Received Thanks: 350
|
Das Drag Event tritt nur ein, wenn du die Maus gedrückt hältst und sie bewegst.
Eine andere Möglichkeit wäre diese:
Code:
public void mouseDragged(MouseEvent argEvent)
{
System.out.println("("+argEvent.getX()+","+argEvent.getY()+")");
if (argEvent.getX() < 0 || argEvent.getY() < 0) {
Rectangle objBounds = objButtonDrag.getBounds();
objButtonDrag.setLocation(objBounds.x+argEvent.getX(), objBounds.y+argEvent.getY());
} else {
Rectangle objBounds = objButtonDrag.getBounds();
if (objBounds.x <= objBounds.x+argEvent.getX() && objBounds.x+argEvent.getX() <= objBounds.x+objBounds.width &&
objBounds.y <= objBounds.y+argEvent.getY() && objBounds.y+argEvent.getY() <= objBounds.y+objBounds.height) {
objButtonDrag.setLocation(objBounds.x+argEvent.getX(), objBounds.y+argEvent.getY());
} else {
objButtonDrag.setLocation(argEvent.getX(), argEvent.getY());
}
}
}
Du kontrollierst ob die Maus noch im Button drinne is, ansonsten setzt du die Position nicht neu. Dann braucht der Button aber wieder den Listener.
|
|
|
06/15/2014, 19:40
|
#5
|
elite*gold: 57
Join Date: Feb 2011
Posts: 1,287
Received Thanks: 211
|
Ja ich drücke ihn ja  - aber es geht nur wenn ich auf den Knopf drücke, geht es irgendwie auch das wenn ich einfach nur im JFrame linksklick klicke das der Button dort hingeht ? Soweit habe kann ich ihn verschieben ohne das er wieder nach oben links geht, aber er "verdoppelt" sich noch.
|
|
|
06/15/2014, 19:48
|
#6
|
elite*gold: 20
Join Date: Nov 2010
Posts: 552
Received Thanks: 350
|
Wenn du den Button mit einem Klick platzieren willst, musst du doch einfach nur dem Frame einen MouseListener geben und in der mouseClicked oder mousePressed Methode den Button auf die Mausposition setzen. Wo is denn dein Problem? Die Drag Variante die ich gepostet habe, funktioniert bei mir einwandfrei.
|
|
|
06/15/2014, 19:58
|
#7
|
elite*gold: 57
Join Date: Feb 2011
Posts: 1,287
Received Thanks: 211
|
Okey ich habs danke dir  .
|
|
|
 |
Similar Threads
|
[B] Push Button [S] 10 e*gold/Button; 25 e*g/psd+Button
09/20/2013 - elite*gold Trading - 4 Replies
Moin,
Hier könnt ihr folgenden Push Button kaufen:
http://i.epvpimg.com/YlrYe.jpg
Pro Button wären das 10e*g, pro Button mit .psd dazu 25e*g.
Wenn ihr einen Button kaufen wollt, schreibt mir eine PN, damit ich den Namen ändern kann, alles hochladen kann und euch dann per Treasure schicken kann. ;)
Schrift kann auch geändert werden. Dazu einfach in der PN schreiben, welche Schrift ihr haben wollt^^
|
[Java] Konflikt zwischen Label verschieben und setText() [Schulprojekt]
07/08/2011 - General Coding - 14 Replies
Hallo zusammen,
da mir mit diesem Projekt bei einer anderen Frage bereits gut weitergeholfen wurde möchte ich nochmal eine Frage stellen, aber zunächst nochmal die gesamtsituation:
Wir bauen mit Java das Brettspiel "Mensch ärgere dich nicht" nach und nutzen dafür die Netbeans IDE. Die Spielfiguren werden durch Labels, die ein Icon beinhalten dargestellt. Jetzt müssen diese Label natürlich verschoben werden, was auch kein Problem an sich darstellt. Das Problem besteht darin, dass man zwar...
|
All times are GMT +1. The time now is 23:56.
|
|