Drag and Drop eines Buttons

Diskutiere Drag and Drop eines Buttons im AWT, Swing, JavaFX & SWT Forum; Guten Morgen liebe User, ich habe ein Problem. Unsere Informatiklehrerin hat uns ins kalte Wasser geschmissen und fordert uns auf ein Programm zu...

  1. JSCHLAG
    JSCHLAG Mitglied
    Guten Morgen liebe User,

    ich habe ein Problem. Unsere Informatiklehrerin hat uns ins kalte Wasser geschmissen und fordert uns auf ein Programm zu erstellen, in dem eine Klasse eine GUI und eine Klasse für das Hintergrund zuständig ist. Ich möchte ein Button per Drag and Drop hin und her ziehen. Dafür habe ich ein Code aus dem Internet gefunden welcher perfekt für meine JframeRahmenZeichnung ist. Jedoch harmoniert dieser Code nicht richtig mit meinem Button. Wenn ich den Button nur anklicke, bewegt sich der Button beliebig weit entfernt von mir.

    Code (Text):
    import java.awt.MouseInfo;
    import java.awt.Point;
    import java.awt.PointerInfo;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;

    public class Items extends JButton {
            private static final long serialVersionUID = 1L;
            private int xPos, yPos;

            public Items(int xx,int yy,int w,int h, String url){
                try{
                    BufferedImage buttonIcon = ImageIO.read(new File(url));
                    setIcon(new ImageIcon(buttonIcon));
                }
                catch(IOException e){System.out.println(e.getMessage());}
                setBounds(xx,yy,w,h);
                //setBorder(BorderFactory.createEmptyBorder());
                //setContentAreaFilled(false);
                addMouseMotionListener(new MouseMotionListener(){
                    public void mouseDragged(MouseEvent e){
                        if(xPos==-1 || yPos==-1){
                            xPos = e.getX();
                            yPos = e.getY();
                        }
                        PointerInfo pointerInfo = MouseInfo.getPointerInfo();
                        Point point = pointerInfo.getLocation();
                        int x = (int)point.getX();
                        int y = (int)point.getY();
                        setLocation(x-xPos, y-yPos);
                    }
                    public void mouseMoved(MouseEvent e){
                        xPos = -1;
                        yPos = -1;
                    }
                });
            }
    }
     
    Code (Text):
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.MouseInfo;
    import java.awt.Point;
    import java.awt.PointerInfo;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;

    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;

    public class PGUI{
            PWorld panelbk = new PWorld();
            JPanel panelframe = new JPanel();
            private int xPos, yPos;
           
            public PGUI(){  
                //frame#1
                JFrame frame = new JFrame("Pou-Windows-10-Edition-Free");
                frame.setSize(960,664);
                frame.setUndecorated(true);
               
               
               
                Items itm1=new Items(50,50,50,50,"D:/WorkJava/Pou/bin/bilder/pbackground.jpg");
               
               
               
               
                //btn1
                PreBtn btn1=new PreBtn("Drück Mich!",848, 600, 102, 23,Color.BLACK,new Color(0,255,255));
                btn1.setLocation(848, 600);
                //panelbk
                panelbk.setLayout(null);
                panelbk.add(btn1);
                panelbk.add(itm1);
               
               
               
                //minimalizeframe
                PreBtn minimizeframe=new PreBtn("Minimize",830, 0,85, 30,Color.BLACK,Color.WHITE);
                minimizeframe.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        frame.setState(Frame.ICONIFIED);
                    }
                });
                minimizeframe.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseExited(MouseEvent e) {
                        minimizeframe.setBackground(Color.BLACK);
                        minimizeframe.setForeground(Color.WHITE);
                    }
                    @Override
                    public void mouseEntered(MouseEvent e) {
                        minimizeframe.setBackground(Color.WHITE);
                        minimizeframe.setForeground(Color.BLACK);
                    }
                });
               
                //closeframe
                PreBtn closeframe=new PreBtn("X",914, 0,46, 30,Color.BLACK,Color.WHITE);
                closeframe.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.exit(0);
                    }
                });
                closeframe.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseExited(MouseEvent e) {
                        closeframe.setBackground(Color.BLACK);
                        closeframe.setForeground(Color.WHITE);
                    }
                    @Override
                    public void mouseEntered(MouseEvent e) {
                        closeframe.setBackground(Color.WHITE);
                        closeframe.setForeground(Color.BLACK);
                    }
                });
             
                //labelframe
                JLabel labelframe=new JLabel("Pou-Windows-10-Edition-Free");
                labelframe.setBounds(10, 0, 291, 30);
                labelframe.setForeground(Color.WHITE);
               
                //panelframe
                panelframe.setBackground(Color.black);
                panelframe.setBounds(0,0,960,30);
                panelframe.setLayout(null);
                panelframe.add(minimizeframe);
                panelframe.add(closeframe);
                panelframe.add(labelframe);
                //panelframe-mouselistener#1
                panelframe.addMouseMotionListener(new MouseMotionListener(){
                    public void mouseDragged(MouseEvent e){
                        if(xPos==-1 || yPos==-1){
                            xPos = e.getX();
                            yPos = e.getY();
                        }
                        PointerInfo pointerInfo = MouseInfo.getPointerInfo();
                        Point point = pointerInfo.getLocation();
                        int x = (int)point.getX();
                        int y = (int)point.getY();
                        frame.setLocation(x-xPos, y-yPos);
                    }
                    public void mouseMoved(MouseEvent e){
                        xPos = -1;
                        yPos = -1;
                    }
                });
               
               
               
                //frame#2
                frame.getContentPane().add(panelframe,BorderLayout.CENTER);
                frame.getContentPane().add(panelbk,BorderLayout.CENTER);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);}
           
            public static void main(String[] args) {
                new PGUI();}
    }


     
    Würde mich auf hilfreiche Antworten freuen, da mir dieses Projekt sehr wichtig ist, da ich zurzeit auf 14pkt stehe.
     
  2. Vielleicht helfen dir diese Grundlagen hier weiter: (hier klicken)
Die Seite wird geladen...

Drag and Drop eines Buttons - Ähnliche Themen

Drag and Drop für JComponents
Drag and Drop für JComponents im Forum AWT, Swing, JavaFX & SWT
Drag&Drop zwischen JTable und JTree
Drag&Drop zwischen JTable und JTree im Forum AWT, Swing, JavaFX & SWT
Drag und Drop
Drag und Drop im Forum AWT, Swing, JavaFX & SWT
JavaFX Chart Drag and Drop
JavaFX Chart Drag and Drop im Forum AWT, Swing, JavaFX & SWT
Drag and Drop mehrerer File aus Explorer in JTable
Drag and Drop mehrerer File aus Explorer in JTable im Forum Allgemeine Java-Themen
Thema: Drag and Drop eines Buttons