Um paintComponent schlank zu halten, sollen die zu zeichnenden Komponenten außerhalb erzeugt werden.
Wie aber komme ich außerhalb von paintComponent an die Maße der Zeichenfläche heran?
Oder
Wie baut man getWidth() und getHeight() sauber ein?
Vielen Dank für die Tipps!
(Und vielen Dank an Wildcard für das Tutorial!!!)
Wie aber komme ich außerhalb von paintComponent an die Maße der Zeichenfläche heran?
Oder
Wie baut man getWidth() und getHeight() sauber ein?
Vielen Dank für die Tipps!
(Und vielen Dank an Wildcard für das Tutorial!!!)
Java:
//Bspl. nach "Zeichnen in Swing Tutorial"
public class SimpleRectangle {
private NaivePaintingComponent paintingComponent = new NaivePaintingComponent();
public SimpleRectangle() {
JFrame frame = new JFrame("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
paintingComponent.setPreferredSize(new Dimension(300,300));
frame.add(paintingComponent);
frame.pack();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
Rectangle2D.Float rect = new Rectangle2D.Float(10f,10f,100f,100f);
paintingComponent.setShape(rect);
paintingComponent.setColor(Color.BLACK);
paintingComponent.repaint();
}
public static void main(String[] args){new SimpleRectangle();}
}//class SimpleRectangle
class NaivePaintingComponent extends JComponent{
private Shape shape;
private Color c;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(shape!=null && c!=null){
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(c);
g2d.draw(shape);
}
}
public void setColor(Color c) {this.c = c;}
public void setShape(Shape shape) {this.shape = shape;}
}//class NaivePaintingComponent