What is the simplest way to draw in Java?
import java.awt.*; import javax.swing.*; public class Canvas { private JFrame frame; private Graphics2D graphic; private JPanel canvas; public Canvas() { frame = new JFrame("A title"); canvas = new JPanel(); frame.setContentPane(canvas); frame.pack(); frame.setVisible(true); } public void paint(Graphics g){ BufferedImage offImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Grapics2D g2 = offImg.createGraphics(); g2.setColor(new Color(255,0,0)); g2.fillRect(10,10,200,50); } }
This doesn’t work and I have no idea how to get anything to appear.
Advertisement
Answer
Easiest way:
public class Canvas extends JPanel { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; // painting code goes here. } }
You simply need to extend JPanel
and override the paintComponent
method of the panel.
I’d like to reiterate that you should not be overriding the paint
method.
Here is a very minimalistic example that works.
public static void main(String[] args) { JFrame f = new JFrame(); JPanel p = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(0, 0, 100, 100); } }; f.add(p); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }