Hey,
ich verstehe folgendes nicht, weshalb werden bei mir viele Ovale gezeichnet und sobald ich die Fenstergröße verändere sehe ich wieder nur ein Oval (so wie ich es eigentlich haben möchte);
nun ist mir aber auch aufgefallen sobald ich ein Rand um mein paint JPanel zeichne stimmt wieder alles und es wird grundsätzlich immer nur ein Oval gezeichnet
gruß
Alex
ich verstehe folgendes nicht, weshalb werden bei mir viele Ovale gezeichnet und sobald ich die Fenstergröße verändere sehe ich wieder nur ein Oval (so wie ich es eigentlich haben möchte);
nun ist mir aber auch aufgefallen sobald ich ein Rand um mein paint JPanel zeichne stimmt wieder alles und es wird grundsätzlich immer nur ein Oval gezeichnet
gruß
Alex
Code:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
@SuppressWarnings("serial")
public class PaintWindo extends JPanel {
int startX, startY, endX, endY;
ZeinenK zeichnen;
public class ZeinenK extends JPanel{
public ZeinenK(){
setBackground(Color.PINK);
}
public void paintComponent(Graphics g){
super.paintComponents(g);
g.drawOval(startX, startY, endX-startX, endY-startY);
}
}
public PaintWindo(){
setLayout(new BorderLayout());
JPanel paint = new JPanel(new BorderLayout());
zeichnen = new ZeinenK();
paint.add(zeichnen,BorderLayout.CENTER);
/*
paint.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("hmm"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
*/
add(paint);
zeichnen.addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
endX = e.getX();
endY = e.getY();
}
public void mouseReleased(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
});
zeichnen.addMouseMotionListener(new MouseMotionListener() {
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseDragged(MouseEvent e) {
endX = e.getX();
endY = e.getY();
repaint();
System.out.println(e.getX()+" "+e.getY());
}
});
}
public static void showAndCreateGUI(){
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(500,300));
frame.setMinimumSize(new Dimension(394, 400));
frame.add(new PaintWindo());
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width - frame.getPreferredSize().width)/2,
(d.height - frame.getPreferredSize().height)/2 );
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
showAndCreateGUI();
}
});
}
}