Desenhando em Java

Bom dia

Estou fazendo um trabalho para a faculdade, onde o mesmo consiste que o usuário deve preencher algumas coordenadas em um textfield e a partir dessas coordenadas o mesmo deve clicar em um botão cujo o nome é circulo e apatir disso o programa deve desenhar um circulo na tela. Com base nas informações levantadas eu fiz o seguinte:

1 - criei uma classe painel que é herda os atributos da classe JPanel.
2 - criei na classe painel um método com o nome de obtemvalores, onde este por passagem de parâmetros recebe as coordenadas informadas pelo usuário.
3 - criei o método paintComponent onde este tem a funcionalidade de desenhar o objeto apartir do tipo informado.
O problema é que quando eu clico no botão circulo por exemplo eu não consigo exibir o painel que eu criei para o usuário dando a impressão que não esta entrando no local que deveria entrar abaixo segue o código fonte para analise.

package aa412;
import java.awt.;
import javax.swing.
;
import java.awt.event.;
import java.awt.Graphics.
;

class Painel extends JPanel
{
int cdx1,cdx2,cdy1,cdy2;
int tipo;
Painel()
{
repaint ();
}

public void obtemvalores(int tp, int codx1, int codx2, int cody1, int cody2)
{
cdx1 = codx1;
cdx2 = codx2;
cdy1 = cody1;
cdy2 = cody2;
tipo = tp;
}

public void paintComponent (Graphics g)
{
super.paintComponent(g);
Color cor;

cor = Color.blue;

g.setColor(cor);                          
if (tipo == 1)
{
   g.fillOval(cdx1, cdy1, cdx2, cdy2);    
}

}
}

public class PBrush extends JFrame implements ActionListener{   
 JButton botaoReta;   
 JButton botaoCirculo;   
 JTextField coordX1;   
 JTextField coordY1;   
 JTextField coordX2;   
 JTextField coordY2;   
 JPanel panel;   
 int x1,x2,y1,y2;   
   
 public PBrush() {   
    super("Programa");         
 }       
 public Component criaComponentes()   {   
    JButton botaoReta = new JButton("Desenhar Reta");   
    JButton botaoCirculo = new JButton("Desenhar Circulo");   
    JTextField coordX1 = new JTextField();   
    JTextField coordY1 = new JTextField();   
    JTextField coordX2 = new JTextField();   
    JTextField coordY2 = new JTextField();   
    JPanel panel = new JPanel(new GridLayout(3,2));   
    panel.add(botaoReta);   
    panel.add(botaoCirculo);   
    panel.add(coordX1);   
    panel.add(coordY1);   
    panel.add(coordX2);   
    panel.add(coordY2);   
    return panel;   
 }          
   
 public void mostrarComponentes()    {   
    Component c1 = criaComponentes();   
    getContentPane().add(c1);   
    setSize(500,300);   
    setVisible(true);   
 }    
 public void actionPerformed (ActionEvent ae) {
    int codx1, cody1, codx2, cody2;
    int tipo;
    PBrush frame;
    frame = new PBrush();
    Object obj = ae.getSource(); //botão clicado
     if  (obj  instanceof  JButton)
     {  
        JButton b = (JButton) obj;
        if (b == botaoCirculo){
            codx1 = Integer.parseInt(coordX1.toString());
            codx2 = Integer.parseInt(coordX2.toString());
            cody1 = Integer.parseInt(coordY1.toString());
            cody2 = Integer.parseInt(coordY2.toString());
            tipo = 1;
            Painel teste;
            teste = new Painel();      
            JFrame resultado;
            resultado = new JFrame();
            resultado.add(teste);        
    
            teste.obtemvalores(tipo, codx1, codx2, cody1, cody2);
            resultado.hide();        
        }    
             
        }         
 }          
 public static void main(String[] args)  {   
    PBrush app = new PBrush();   
    app.mostrarComponentes();   
 }   
}  

Se alguem puder me ajudar eu agradeço

Qual a sua dúvida?

eu gostaria de saber como eu posso clicar no botão circulo e o mesmo exibir o circulo apartir dos dados passados pelo usuário.

Em uma pesquisada no forum mesmo encontrei este post

http://www.guj.com.br/posts/list/62288.java

Creio que deva servir para que você implemente no seu trabalho.

estava analisando o programa e descobri que um problema é o fato de não estar passando pelo método actionPerformed será que alguem consegueria me informar o pq que ele não esta entrando?

Você precisa dizer que o botão responderá a eventos:
adicione esta linha depois de criar o botão.

botaoCirculo.addActionListener(this);

Espero que tenha ajudado.

Pessoal desculpa o que estava acontecendo que os botões eu não estava adicionando ao meu actionlistener por isso o problema do click´, mas ainda ficou uma dúvida colocando mensagens no meu programa afim de saber onde esta o problema verifiquei que o meu programa não esta conseguindo executar o código abaixo do seguinte teste:

public void actionPerformed (ActionEvent ae) {
int codx1, cody1, codx2, cody2;
int tipo;
PBrush frame;
frame = new PBrush();
Object obj = ae.getSource();
System.out.println(“passei por aqui03”);
if (obj instanceof JButton)
{
System.out.println(“passei por aqui04”);
JButton b = (JButton) obj;
if (b == botaoCirculo)
{
System.out.println(“passei por aqui05”);

Ele executa normalmente até a mensagem 04 porém no teste b==botão circulo ele não executa alguem tem ideia do que possa ser?

Pessoal tira uma dúvida qual é o comando que eu utilizo para mostrar um novo frame, por exemplo eu já tenho um frame cujo o nome é JFRAME e gostaria de chamar um outro frame para mostar um circulo por exemplo como eu posso mostar um novo frame na tela?

Coloca o seu códio entre as tags de code pra ficar mais legíve ae :thumbup:

Abaixo segue o código conforme solicitado reforçando que eu não estou conseguindo exibir o novo frame quando
pressiono o botãocirculo.

package aa412;
import java.awt.*;   
import javax.swing.*;   
import java.awt.event.*;   
import java.awt.Graphics.*;

class Painel extends JPanel
{ 
    int cdx1,cdx2,cdy1,cdy2;
    int tipo;
    Painel() 
    { 
        repaint (); 
    }    
    public void obtemvalores(int tp, int codx1, int codx2, int cody1, int cody2)
    {
      cdx1 = codx1;
      cdx2 = codx2;
      cdy1 = cody1;
      cdy2 = cody2;
      tipo = tp;
    }
    public void paintComponent (Graphics g)
    {           
      super.paintComponent(g);     
      Color cor;          
      cor = Color.blue;
      g.setColor(cor);                          
      if (tipo == 1)
      {
        g.fillOval(cdx1, cdy1, cdx2, cdy2);    
      }    
    }
}
  
public class PBrush extends JFrame implements ActionListener{   
    JButton botaoReta;   
    JButton botaoCirculo;   
    JTextField coordX1;   
    JTextField coordY1;   
    JTextField coordX2;   
    JTextField coordY2;   
    JPanel panel;       
       
    public PBrush() {   
        super("Programa");         
    }   

    
    public Component criaComponentes()   {   
        botaoReta = new JButton("Desenhar Reta");   
        botaoReta.addActionListener(this);
        botaoCirculo = new JButton("Desenhar Circulo");   
        botaoCirculo.addActionListener(this);
        coordX1 = new JTextField();   
        coordY1 = new JTextField();   
        coordX2 = new JTextField();   
        coordY2 = new JTextField();   
        panel = new JPanel(new GridLayout(3,2));   
        panel.add(botaoReta);   
        panel.add(botaoCirculo);   
        panel.add(coordX1);   
        panel.add(coordY1);   
        panel.add(coordX2);   
        panel.add(coordY2);   
        System.out.println("CRIARCOMPONENTES");
        return panel;           
    }          
       
    public void mostrarComponentes()    {   
        Component c1 = criaComponentes();   
        getContentPane().add(c1);   
        setSize(500,300);   
        setVisible(true);   
        System.out.println("MOSTRARCOMPONENTES");
    }      
    
    public void actionPerformed (ActionEvent ae) {
        int codx1, cody1, codx2, cody2;
        int tipo;
        String sn01;    
        PBrush frame;
        frame = new PBrush();
        Painel teste;
        teste = new Painel();      
        Object obj = ae.getSource(); //botão clicado
        System.out.println("Mensagem01");
         if  (obj  instanceof  JButton)
         {  
            JButton b = (JButton) obj;
            System.out.println("Mensagem02");
            if (b == botaoCirculo)
            {
                System.out.println("Mensagem03");
                sn01 = coordX1.getText();
                codx1 = Integer.parseInt(sn01);
                sn01 = coordX2.getText();
                codx2 = Integer.parseInt(sn01);
                sn01 = coordY1.getText();
                cody1 = Integer.parseInt(sn01);
                sn01 = coordY2.getText();
                cody2 = Integer.parseInt(sn01);
                tipo = 1;             
                
                JFrame resultado;
                resultado = new JFrame();
                resultado.add(teste);        
        
                teste.obtemvalores(tipo, codx1, codx2, cody1, cody2);
                resultado.hide();        
            }                     
         }         
    }           
  
    public static void main(String[] args)  {   
        PBrush app = new PBrush();   
        app.mostrarComponentes();   
    }   
}  

Esqueci de avisar é o frame que se inicia na linha 105, eu gostaria de fazer com que ao clicar no botaocirculo o meu programa criasse em outra janeta o frame com circulo em questão

galera se alguem pudesse me ajudar com a questão da nova janela contendo o resultado do click do botão eu agradeço

pessoal vc´s não se esqueceram de mim né? :roll:

por favor me ajudeeeeeeeeeeeeeeeeeeem

Cara, tive que fazer um paint tosco para a facu ano passado. Da uma olhada no código.