Ich habe eine GUI Klasse, in der ein Konstruktor(JFrame-Building) und die Methode getLocx() vorzufinden ist, und eine Items Klasse. Ich möchte die Location des Jframe aus dem Konstruktor der Gui Klasse(PGUI()) in der Items Klasse auslesen.
Erstelle ich jedoch ein PGUI-Objekt in der Items Klasse, um meine Methode getLocx() aufzurufen schmiert das Programm ab und zeigt statt ein Fenster gar kein Fenster an. Außerdem kackt mein Rechner danach immer ab.
Erstelle ich jedoch ein PGUI-Objekt in der Items Klasse, um meine Methode getLocx() aufzurufen schmiert das Programm ab und zeigt statt ein Fenster gar kein Fenster an. Außerdem kackt mein Rechner danach immer ab.
Java:
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=-1;
private int yPos=-1;
public int xxx=123;
public PGUI(){
//frame#1
JFrame frame1 = new JFrame("Pou-Windows-10-Edition-Free");
frame1.setSize(900,830);
frame1.setUndecorated(true);
xxx=frame1.getLocation().x;
Items itm1=new Items(50,50,50,50,"C:/Users/i3/Desktop/pback.jpg");
//btn1
PreBtn btn1=new PreBtn("Drück Mich!",848, 600, 102, 23,Color.BLACK,new Color(0,255,255));
btn1.setLocation(788, 766);
//panelbk
panelbk.add(btn1);
panelbk.add(itm1);
panelbk.setLayout(null);
//minimalizeframe
PreBtn minimizeframe=new PreBtn("Minimize",830, 0,85, 30,Color.BLACK,Color.WHITE);
minimizeframe.setLocation(770, 0);
minimizeframe.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame1.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.setLocation(854, 0);
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,900,30);
panelframe.setLayout(null);
panelframe.add(minimizeframe);
panelframe.add(closeframe);
panelframe.add(labelframe);
panelframe.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e){
if(xPos==-1 || yPos==-1){
xPos = e.getX();//Button bei click
yPos = e.getY();//Button bei click
}
PointerInfo pointerInfo = MouseInfo.getPointerInfo();
Point point = pointerInfo.getLocation();
int x = (int)point.getX();//Display
int y = (int)point.getY();//Display
frame1.setLocation(x-xPos, y-yPos);
}
public void mouseMoved(MouseEvent e){
xPos = -1;
yPos = -1;
xxx=frame1.getLocation().x;
}
});
//frame#2
frame1.getContentPane().add(panelframe,BorderLayout.CENTER);
frame1.getContentPane().add(panelbk,BorderLayout.CENTER);
frame1.setLocationRelativeTo(null);
frame1.setVisible(true);}
public static void main(String[] args) {
new PGUI();}
public int getLocx(){
return xxx;
}
}
Java:
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=-1;
private int yPos=-1;
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();//Button bei click
yPos = e.getY();//Button bei click
}
PointerInfo pointerInfo = MouseInfo.getPointerInfo();
Point point = pointerInfo.getLocation();
int x = (int)point.getX();//Display bei Bewegung
int y = (int)point.getY();//Display bei Bewegung
//int xxx=pg.getLocx();
setLocation(x-xPos/*-xxx*/, y-yPos);
}
public void mouseMoved(MouseEvent e){
xPos = -1;//Wenn man über einem Button
yPos = -1;//Wenn man über einem Button
}
});
}
}