Hallo bin neu hier und brauche etwas Hilfe,
versuche ein JPanel flüssig der Drag&Drop zu verschieben. Ich weiss, irgendwo in diesem riesigen Forum wird mein Problem gelöst, aber darum geht es nicht in erster Linie. Ich möchte einfach erst mal verstehen, warum mein Code nicht flüssig funktioniert. Das Panel flakker z.B. beim Draggen und ich kann den Mauszeiger auch aus dem Panel rausziehen. Also warum kommt das Panel nicht schnell genug hinterher?
Hie mein Code:
Ich starte von der Main
Hilfe bzw. ein paar Tipps/Erklärungen wären super!
versuche ein JPanel flüssig der Drag&Drop zu verschieben. Ich weiss, irgendwo in diesem riesigen Forum wird mein Problem gelöst, aber darum geht es nicht in erster Linie. Ich möchte einfach erst mal verstehen, warum mein Code nicht flüssig funktioniert. Das Panel flakker z.B. beim Draggen und ich kann den Mauszeiger auch aus dem Panel rausziehen. Also warum kommt das Panel nicht schnell genug hinterher?
Hie mein Code:
Java:
package basic3;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class StartFrame extends JFrame {
private Zeichenflaeche zeichenflaeche;
MyPanel b1;
int bauteilX = 300;
int bauteilY = 300;
int offsetX, offsetY;
JLabel testfeld;
Graphics g;
MausBeweger b = new MausBeweger();
public StartFrame() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setVisible(true);
setResizable(false);
zeichenflaeche = new Zeichenflaeche();
zeichenflaeche.setLayout(null);
zeichenflaeche.setBounds(0, 0, 800, 600);
add(zeichenflaeche);
zeichenflaeche.addMouseMotionListener(b);
b1 = new MyPanel();
b1.setBounds(100, 100, b1.breite, b1.laenge);
b1.addMouseMotionListener(b);
b1.addMouseListener(b);
zeichenflaeche.add(b1);
//g = zeichenflaeche.getGraphics();
}
private class Zeichenflaeche extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
b1.setLocation(bauteilX, bauteilY);
}
}
private class MausBeweger extends MouseAdapter {
@Override
public void mouseDragged(MouseEvent e) {
bauteilX = e.getX() - offsetX;
bauteilY = e.getY() - offsetY;
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
offsetX = x - bauteilX;
offsetY = y - bauteilY;
}
}
private class MyPanel extends JPanel {
String name;
int breite = 60;
int laenge = 60;
MyPanel() {
super();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.YELLOW);
g.setColor(Color.RED);
g.fillRect(20, 20, 20, 20);
}
}
}
Java:
package basic3;
public class MainBasic3 {
public static void main(String[] args){
StartFrame f = new StartFrame();
}
}
Hilfe bzw. ein paar Tipps/Erklärungen wären super!