Omstrukturering af appliktion
Hej eksperter!!Er i gang med at lave en gui og ville gerne kunne flytte iconer i form at labels rundt på en pane. Jeg har fundet nederstående kode som også fungerer fint(for sig selv). Problemet er bare at jeg ikke kan få koden til fungere sammen med resten af GUI'en. Så jeg ville gerne hvis der var nogen der kunne omstrukturerer denne kode så den nemt kan implementeres i en GUI bestående af flere panes og andre objekter. Det er så tanken at disse icons kan flyttes rundt på én af disse panes. Det er vigtigt at kunne tilføje og fjerne disse labels løbende.
Håber I kan hjælpe
mvh
Mikkel
Kode til flytning af labels:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FlytLabel extends JFrame implements MouseListener, MouseMotionListener
{
JLabel label;
int labelX;
int labelY;
int labelSizeX;
int labelSizeY;
int xforskydning;//hvor på label'en trykker du i fht pressed_x,pressed_y
int yforskydning;
int pressed_x;//hvor presser du musetasten ned
int pressed_y;
int dragged_x;//hvor trækker du musen
int dragged_y;
boolean skaler;
Font labelFont;
public FlytLabel()
{
labelFont = new Font(null, Font.PLAIN, 22);
skaler = false;
setSize(500,500);
labelX =230;
labelY = 230;
labelSizeX = 50;
labelSizeY = 20;
label = new JLabel("Label", JLabel.CENTER);
label.setFont(label.getFont());
label.setBounds(labelX,labelY,labelSizeX,labelSizeY);
getContentPane().add(label);
addMouseListener(this);
addMouseMotionListener(this);
getContentPane().setLayout(null);
}
public void mouseDragged(MouseEvent e)
{
if(pressed_x > labelX && pressed_x < (labelX + labelSizeX + 5))
{
if(pressed_y > labelY && pressed_y <(labelY + labelSizeY + 23))
{
if(skaler)
{
Font temp = new Font(null, Font.PLAIN, labelFont.getSize()+(((e.getX()-pressed_x)/3)));
label.setFont(temp);
label.setBounds(labelX, labelY,labelSizeX + (e.getX()-pressed_x),labelSizeY + (e.getY() - pressed_x));
}
else
{
label.setBounds((e.getX() + xforskydning),(e.getY() + yforskydning),labelSizeX,labelSizeY);
}
}
}
}
public void mouseClicked(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
pressed_x = e.getX();
pressed_y = e.getY();
if(e.getClickCount() == 2)
skaler = true;
xforskydning = (labelX - e.getX());
yforskydning = (labelY - e.getY());
}
public void mouseMoved(MouseEvent e)
{
setTitle(e.getX() + "," + e.getY());
}
public void mouseReleased(MouseEvent e)
{
Rectangle r = label.getBounds();
labelX = (int)r.getX();
labelY = (int)r.getY();
if(skaler)
{
labelSizeX = (int)r.getWidth();
labelSizeY = (int)r.getHeight();
labelFont = label.getFont();
}
skaler = false;
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public static void main(String args[])
{
FlytLabel gui = new FlytLabel();
gui.setVisible(true);
}//main
}//class
