Graphics

di il
1 risposte

Graphics

Stò tentando di disegnare con java.
In vari tutorial ho trovato che posso definire una classe Jcomponent usando paintComponent per disegnare un mio "componente" ...
package it.slomito.pixel;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;

@SuppressWarnings("serial")
public class Cerchio extends JComponent {

	private int x, y;
	private double radius;

	public Cerchio(int x, int y, double radius) {

		this.x = x;
		this.y = y;
		this.radius = radius;

	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		// Graphics2D g2 = (Graphics2D) g;
		
		int rad = (int) Math.floor(radius * 2);
		
		g.setColor(Color.BLUE);
		g.drawRect(20, 20, 10, 10);
		
		g.setColor(Color.green);
		g.fillOval(x, y, rad, rad);
		
	}
}
...per poi usarlo aggiungendolo alla mia finestra.
private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 482, 323);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane = frame.getContentPane();
		contentPane.setLayout(new BorderLayout(0, 0));
		
		JPanel panel = new JPanel();
		contentPane.add(panel, BorderLayout.CENTER);
		
		JMenuBar menuBar = new JMenuBar();
		frame.setJMenuBar(menuBar);
		
		
		Cerchio cr = new Cerchio(50,50,30);
		panel.add(cr);
		
	}
Ora mi piacerebbe sapere perchè se mando in esecuzione, non vedo nessun "oval" o "rect". Cosa sbaglio?
Ho notato che durante il caricamento dell'applicazione paintComponent viene richiamato due volte subito dopo la definizione di Cerchio, quindi dovrei vedere qualcosa.

1 Risposte

  • Re: Graphics

    Slomito ha scritto:


    Ora mi piacerebbe sapere perchè se mando in esecuzione, non vedo nessun "oval" o "rect". Cosa sbaglio?
    Il tuo Cerchio è in un JPanel che è nel content pane. Ma il JPanel ha per default un FlowLayout che rispetta il "preferred size" dei componenti. E il tuo Cerchio ha sicuramente un preferred size di 0x0, quindi non visibile materialmente.
Devi accedere o registrarti per scrivere nel forum
1 risposte