Jellysheep
Erfahrenes Mitglied
Hi,
mit dem Code habe ich versucht, ein "durchsichtiges" JFrame anzuzeigen, das nicht die AWTUtilities verwendet:
Leider ruckelt das JFrame beim Verschieben.
Kann man irgendetwas anders programmieren, sodass es nicht mehr ruckelt?
mit dem Code habe ich versucht, ein "durchsichtiges" JFrame anzuzeigen, das nicht die AWTUtilities verwendet:
Java:
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.event.MouseInputListener;
public class TransparentFrame extends JFrame{
BufferedImage bg;
public TransparentFrame() throws AWTException{
super("TransparentFrame");
setSize(200, 200);
bg = new Robot().createScreenCapture(new Rectangle(1024, 768));
setUndecorated(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setListener();
setVisible(true);
}
void setListener() {
MouseInputListener handler = new MouseInputListener() {
java.awt.Point offset;
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
offset = arg0.getPoint();
repaint();
}
@Override
public void mouseReleased(MouseEvent arg0) {
repaint();
}
@Override
public void mouseDragged(MouseEvent e) {
Point where = e.getPoint();
where.translate(-offset.x, -offset.y);
Point loc = getLocationOnScreen();
loc.translate(where.x, where.y);
setLocation(loc);
paint(getGraphics());
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
};
addMouseListener(handler);
addMouseMotionListener(handler);
}
public void paint(Graphics g){
java.awt.Point p = getLocation();
g.drawImage(bg, 0, 0, getWidth(), getHeight(), p.x, p.y, p.x+getWidth(), p.y+getHeight(), null);
g.drawRect(0, 0, getWidth()-1, getHeight()-1);
}
public static void main(String [] args){
try {
new TransparentFrame();
} catch (AWTException e) {
e.printStackTrace();
}
}
}
Leider ruckelt das JFrame beim Verschieben.
Kann man irgendetwas anders programmieren, sodass es nicht mehr ruckelt?
Zuletzt bearbeitet von einem Moderator: