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.
Würde mich auf hilfreiche Antworten freuen, da mir dieses Projekt sehr wichtig ist, da ich zurzeit auf 14pkt stehe.
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:
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:
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.