1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Método paint_Linha não é executado.

Estou fazendo um trabalho pra faculdade, preciso desenvolver uma espécie de CAD, que desenhe as primitivas, linha, quadrado, e circulo no mínimo. Acredito que não estou longe de conseguir meu objetivo, mas não consigo pintar uma linha na tela de jeito nenhum.

public class TelaComandos extends JFrame {

    private JToolBar BarraDeFerramentas = new JToolBar();

    private JButton Linha = new JButton("Linha");
    private JButton Quadrado = new JButton("Quadrado");
    private JButton Circulo = new JButton("Circulo");
    private JOptionPane Message = new JOptionPane();

    private Desenho Painel_Desenho = new Desenho();

    public TelaComandos() {
        super("CAD");

        BarraDeFerramentas.add(Linha);
        BarraDeFerramentas.add(Quadrado);
        BarraDeFerramentas.add(Circulo);

        add(BarraDeFerramentas, BorderLayout.NORTH);
        add(Painel_Desenho, BorderLayout.CENTER);

        Seleciona_Figura select = new Seleciona_Figura();

        Linha.addActionListener(select);
        Quadrado.addActionListener(select);
        Circulo.addActionListener(select);

    }

    private class Seleciona_Figura implements ActionListener {

        int Forma = 0;

        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == Linha) {
                Forma = 0;
                repaint();
            }
            if (event.getSource() == Quadrado) {
                Forma = 1;
                repaint();
            }
            if (event.getSource() == Circulo) {
                Forma = 2;
                repaint();
            }

            Painel_Desenho.setForma(Forma);

        }

    }

}

Classe Desenho:

public class Desenho extends JPanel implements MouseListener,
        MouseMotionListener {

    Dimension Dimensao = Toolkit.getDefaultToolkit().getScreenSize();

    private BufferedImage BufferImage = new BufferedImage(
            (int) Dimensao.getWidth(), (int) Dimensao.getHeight(),
            BufferedImage.TYPE_INT_RGB);
    private BufferedImage BufferReta = new BufferedImage(
            (int) Dimensao.getWidth(), (int) Dimensao.getHeight(),
            BufferedImage.TYPE_INT_RGB);

    private int valor = 0;

    public Desenho() {
        Graphics GraphicsImage = BufferImage.createGraphics();
        GraphicsImage.setColor(Color.WHITE);
        GraphicsImage.fillRect(0, 0, BufferImage.getWidth(),
                BufferImage.getHeight());
        GraphicsImage.dispose();

        Graphics GraphicReta = BufferReta.createGraphics();
        GraphicReta.setColor(Color.WHITE);
        GraphicReta.fillRect(0, 0, BufferReta.getWidth(),
                BufferReta.getHeight());
        GraphicReta.dispose();

        this.addMouseListener(this);
        this.addMouseMotionListener(this);
    }

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

        g.setColor(Color.WHITE);
        g.fillRect(0, 0, BufferImage.getWidth(), BufferImage.getHeight());
        g.drawImage(BufferReta, 0, 0, null);

        g.dispose();

    }

    public void setForma(int newValor) {

        valor = newValor;

    }



    private void Forma() {

        if (valor == 0) {
            Linha linha = new Linha();
            linha.paint_Linha();
        }

    }
}
public class Linha extends Figura implements MouseListener, MouseMotionListener {

    Dimension Dimensao = Toolkit.getDefaultToolkit().getScreenSize();

    private BufferedImage BufferImage = new BufferedImage(
            (int) Dimensao.getWidth(), (int) Dimensao.getHeight(),
            BufferedImage.TYPE_INT_RGB);

    private BufferedImage BufferReta = new BufferedImage(
            (int) Dimensao.getWidth(), (int) Dimensao.getHeight(),
            BufferedImage.TYPE_INT_RGB);

    // Construtor
    public Linha() {
        this.addMouseListener(this);
        this.addMouseMotionListener(this);

    }

    public void mouseClicked(MouseEvent e) {

        xi = e.getX();
        yi = e.getY();

        repaint();
    }

    public void mousePressed(MouseEvent e) {

        xi = e.getX();
        yi = e.getY();

        repaint();

    }

    public void mouseDragged(MouseEvent e) {
        xf = e.getX();
        yf = e.getY();
        repaint();
    }

    public void mouseMoved(MouseEvent arg0) {

    }

    public void mouseEntered(MouseEvent arg0) {

    }

    public void mouseExited(MouseEvent arg0) {

    }

    public void mouseReleased(MouseEvent e) {

        xf = e.getX();
        yf = e.getY();

        Graphics GraphicsImage = BufferImage.createGraphics();
        GraphicsImage.drawImage(BufferReta, 0, 0, null);
        GraphicsImage.dispose();

        repaint();

    }

    public void paint_Linha() {
        Graphics linha = BufferReta.createGraphics();
        linha.drawImage(BufferImage, 0, 0, null);
        linha.setColor(Color.BLACK);
        linha.drawLine(xi, yi, xf, yf);
//        linha.drawLine(100, 100, 200, 200);
        linha.dispose();

    }
}

Eu clico no botão Linha, e nada acontece, preciso muito resolver isso.

Obrigado a todos...

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags polimorfismo herança swing java ou faça a sua própria pergunta.