Eu fiz algumas modificações no seu código e ele funcionou
crie um método que terá toda a lógica de seu código e deixe em main apenas a instância do objeto e o chamado do método, já que não dá para usar nada que não seja static dentro dum método static
public class AbaMenu{
private Canvas canvas = new Canvas();
//private JFrame frame = new JFrame();//private Graphics g;publicstaticvoidmain(String[]ags){AbaMenuaba=newAbaMenu();aba.go();}publicvoidgo(){JFrameframe=newJFrame();Pintortt=newPintor();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//encerra o códigoframe.add(tt);frame.setBackground(Color.DARK_GRAY);//frame.setExtendedState(MAXIMIZED_BOTH);canvas.setSize(frame.getMaximumSize());//jFrame.setVisible(true);frame.setSize(400,400);//configura o tamanho da janelaframe.setLocation(500,250);//deixa mais ou menos no meioframe.setVisible(true);}classPintorextendsJPanel{//precisamos de um JPanel para adicionar em frame, uma classe interna é o ideal.publicvoidpaintComponent(Graphicsg){//é um método a ser extendido, try{//adicionei um bloco try/catch/finally para saber se g.setColor(Color.BLUE);//retorna null se não puder ser anexado ao displayg.fillOval(50,50,100,100);}catch(Exceptionex){if(g==null)System.out.println("g == null");}finally{System.out.println("fim do bloco try catch");}}}
}
`
Lince_potiguara
para usar o método fillOval() não é preciso um canvas, mas eu deixei pelo canvas ser útil