Hi,
ich möchte gerne einen JPanel durch klicken und ziehen verschieben.
Leider klappt das nur teilweise, denn das JPanel wird nicht exakt dort hin verschoben, wo ich das will und springt teilweise ganz woanders hin.
Hier der Quellcode:
Falls mir jemand weiterhelfen könnte, wäre ich sehr dankbar!
Liebe Grüße
Reality
ich möchte gerne einen JPanel durch klicken und ziehen verschieben.
Leider klappt das nur teilweise, denn das JPanel wird nicht exakt dort hin verschoben, wo ich das will und springt teilweise ganz woanders hin.
Hier der Quellcode:
Code:
public class IdentifierBuilder {
public void IdentifierBuilder(){
}
public static void main(String args[]){
IdentifierBuilder idBuilder = new IdentifierBuilder();
Window window = new Window();
}
}
Code:
import java.awt.event.*;
import javax.swing.*;
import java.awt.color.*;
import java.awt.*;
public class Window extends JFrame{
private JFrame jfNewProject = new JFrame("Neues Projekt"); //Window to set up the id card.
private JPanel contentPane = new JPanel(); // Here you add Window-Components
private JMenuBar menuBar = new JMenuBar();
private JMenu fileMenu = new JMenu( "Datei" );
private JMenuItem newProject = new JMenuItem("Neues Projekt");
private JPanel idCard = new JPanel();
private int widthIDCard;
private int heightIDCard;
private ComponentManager compManager = new ComponentManager();
public Window(){
super("Ausweis-Ersteller"); //Titel
contentPane.setBackground(Color.GRAY);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Programm exits on pressing Exit-Button
this.setContentPane(contentPane); //Setting contentpane
this.setMenu();
this.setSize(700, 700);
this.setLocationRelativeTo(null); //Sets the window in the middle of the screen
this.setVisible( true );
}
private void setMenu(){
this.setJMenuBar( menuBar );
menuBar.add( fileMenu );
fileMenu.add(newProject);
newProject.addActionListener(new AbstractAction(){
public void actionPerformed(ActionEvent e){
newProject();
}
});
}
private void newProject(){
JPanel contentPane2 = new JPanel();
jfNewProject.setContentPane(contentPane2);
JLabel jlWidth = new JLabel("Breite in Pixel");
JLabel jlHeight= new JLabel("Höhe in Pixel");
JButton jbOK = new JButton("OK");
JButton jbCancel = new JButton("Abbrechen");
final JTextField jtfWidth = new JTextField(5);
final JTextField jtfHeight = new JTextField(5);
contentPane2.add(jlWidth);
contentPane2.add(jtfWidth);
contentPane2.add(jlHeight);
contentPane2.add(jtfHeight);
contentPane2.add(jbOK);
contentPane2.add(jbCancel);
jfNewProject.setSize(100, 100);
jfNewProject.setLocationRelativeTo(null);
jfNewProject.setVisible( true );
jfNewProject.pack();
jbOK.addActionListener(new AbstractAction(){
public void actionPerformed(ActionEvent e){
widthIDCard = Integer.parseInt(jtfWidth.getText());
heightIDCard = Integer.parseInt(jtfHeight.getText());
idCard.setPreferredSize(new Dimension( widthIDCard, heightIDCard ));
idCard.setBackground(Color.white);
idCard.setBorder(BorderFactory.createLineBorder(Color.black));
contentPane.add(idCard);
compManager.addComponent("idCard", idCard);
repaintWindow();
jfNewProject.dispose();
}
});
jbCancel.addActionListener(new AbstractAction(){
public void actionPerformed(ActionEvent e){
jfNewProject.dispose();
}
});
}
private void repaintWindow(){
this.validate();
}
}
Code:
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ComponentManager {
private boolean isMarked = false;
private HashMap map = new HashMap <String, Component> ();
private Component component;
public ComponentManager(){
}
public void addComponent(String name, Component comp){
this.component = comp;
this.component.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
int x = e.getX();
int y = e.getY();
component.setLocation(x, y);
}
});
map.put(name, comp);
}
private Component getComponent(String name){ //Wird momentan nicht verwendet
return (Component) map.get(name);
}
}
Falls mir jemand weiterhelfen könnte, wäre ich sehr dankbar!
Liebe Grüße
Reality