Note that there are some explanatory texts on larger screens.

plurals
  1. POSimply Java Button to Display a Circle
    primarykey
    data
    text
    <p>I am currently learning java, I understand the concepts except Graphics which as a programmer is totally new to me. Quite frankly it is driving my around the bend. My example should in theory make a circle appear at the press of a Button.</p> <p>Using print methods to debug I keep finding that the Button correctly called all the methods and creates a new circle c object but in the newNode().drawCircle() repaint() is never called and hence the new object not drawn. WHY IS THIS and can someone help me get this darn circle to appear!! Some may notice I resorted to using this example to try and help resolve the problem <a href="http://leepoint.net/notes-java/examples/graphics/circles/circles.html" rel="nofollow">http://leepoint.net/notes-java/examples/graphics/circles/circles.html</a> . </p> <p>This was meant to be the start of a Network graphing program which i PRESUMED would be easy...except for displaying the nodes when created...i.e the circle!</p> <p>This code now works so i hope it can help people with a similar problem, as i know this is a common java assignment :) </p> <pre><code>import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.awt.event.*; import java.util.*; /////////////////////////////////////////////////////////////////////// public class NetGrapher { public static void main(String[] args){ final JFrame frame = new JFrame ("NetGrapher"); frame.getContentPane().add(new NewNode()); /////delete line final NewNode newNode = new NewNode(); ///// Revision after answer, add, frame.getContentPane().add(newNode); (erase the above frame.getContent) JPanel buttonPanel = new JPanel(); JButton button = new JButton ("New Node"); button.addActionListener(new ActionListener( ){ public void actionPerformed( ActionEvent e) { System.out.println( "Button Pressed"); newNode.drawCircle(); } }); buttonPanel.add(button); frame.add(buttonPanel, BorderLayout.SOUTH); frame.setSize(600,600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } ////////////////////////////////////////////////////////////////////// class NewNode extends JComponent { public ArrayList&lt;Circle&gt; _circles = new ArrayList&lt;Circle&gt;(); public void paintComponent(Graphics g){ g.setColor(Color.WHITE); g.fillRect(0, 0, 600, 600); System.out.println( "RePaint"); for ( Circle c : _circles){ System.out.println( "Each C"); g.setColor(Color.BLACK); c.draw(g); } } public void drawCircle(){ System.out.println( "drawCircle Implemented"); Circle c = new Circle(100, 100, 100, 100); _circles.add(c); repaint(); } } ///////////////////////////////////////////////////////////////////// class Circle { int x, y, z, a; Circle (int _x, int _y, int _z, int _a){ this.x = _x; this.y = _y; this.z = _z; this.a = _a; } public void draw(Graphics g){ System.out.println( "Called In Draw Method"); g.setColor(Color.BLACK); g.fillOval(x, y, z, a); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload