Salve, sto iniziando ad affrontare il disegno con java, disegno una semplice ellisse.
con il seguente codice:
codice:import java.awt.*; import java.awt.geom.*; import javax.swing.*; public class Graf02 { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new JFrame("Disegno un ellisse"); f.setBounds(800, 500, 300, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new MyComp()); f.setVisible(true); } }); } } class MyComp extends JComponent{ final static BasicStroke spessore = new BasicStroke(5.0f); public void paintComponent(Graphics g) { Graphics2D g2d =(Graphics2D)g; g2d.setStroke(spessore); Ellipse2D.Double fc = new Ellipse2D.Double(50,30,100,150); g2d.draw(fc); } }
E funziona perfettamente.
Ho provato a fare la stessa cosa ma utilizzando un JFrame esterno.
Ossia un sorgente principale Graf03.java:
codice:import java.awt.*; import java.awt.geom.*; import javax.swing.*; public class Graf03 { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { xJFrame f = new xJFrame(); f.getContentPane().add(new MyComp()); //f.add(new MyComp()); f.setVisible(true); } }); } } class MyComp extends JComponent{ final static BasicStroke spessore = new BasicStroke(5.0f); public void paintComponent(Graphics g) { Graphics2D g2d =(Graphics2D)g; g2d.setStroke(spessore); Ellipse2D.Double fc = new Ellipse2D.Double(50,30,100,150); g2d.draw(fc); } }
Ed un xJFrame.java esterno dove c'è il frame:
codice:import java.awt.*; import javax.swing.*; public class xJFrame extends JFrame { public xJFrame() { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setTitle("Sono una x"); setBounds(new java.awt.Rectangle(800, 500, 300, 300)); setPreferredSize(new Dimension(300, 300)); getContentPane().setLayout(null); pack(); } }
MI visualizza la finestra ma dell'ellisse non vi è traccia!
Dov'è che sbaglio?
Sarebbe utile avere il JFrame a parte in modo da poterlo generare automaticamente in Netbeans.
Grazie per l'eventuale aiuto.

Rispondi quotando
