Como resolver este problema com o Graphics2D?

Olá amigos, no meu código, que estou mostrando abaixo, estou tendo um problema que desconheço como resolver usando a classe Graphics2D.

Graphics2D g2 = new Graphics2D();
Line2D linha = new Line2D.Double(100, 100, 300, 300);
g2.draw(linha);

Tá dando essa exception:

java.awt.Graphics2D is abstract; cannot be instantiated
Graphics2D g2 = new Graphics2D();
^

Desde já agradeço qualquer ajuda. =)

Graphics2D é uma classe abstrata, portanto não se pode instanciar (dá uma olhada na "nomenclatura" do erro).

    Tenta isso:
[code]Graphics2D g2 = (Graphics2D) g.create();[/code] */

Onde você colocou esse código?

O desenho com o Graphics deve ser feito nos métodos paintComponent ou paint, não em outros locais. Esses métodos já vão te passar o objeto Graphics2D.

[quote=ViniGodoy]Onde você colocou esse código?

O desenho com o Graphics deve ser feito nos métodos paintComponent ou paint, não em outros locais. Esses métodos já vão te passar o objeto Graphics2D.[/quote]

Eu acho que estou fazendo tudo errado. =X

Olhei um tutorial do seu site mas tb não entendi muito bem.

Eu já tenho uma JFrame com alguns componentes GUI. É neste ambiente que eu quero desenhar uma linha.

Cara, teria como vc me passar um código completo pra desenhar uma simples linha? Fiquei o dia todo tentando mas nada… =(

Desde já agradeço.

Posta o código todo que vc tem até agora.

Este é o código do frame:

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JSlider;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;

public class Frame extends JFrame {
  JButton m_chegarTremDoLadoEsquerdo = new JButton();
  JButton m_chegarTremDoLadoDireito = new JButton();
  
  public Frame() {
    setTitle("Comunicação entre Processos");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(800, 600);
    setResizable(false);
    setVisible(true);
    setLayout(null);
    
    m_chegarTremDoLadoEsquerdo.setText("Chegar Trêm do Lado Esquerdo");
    m_chegarTremDoLadoEsquerdo.setBounds(0,0,220,20);
    m_chegarTremDoLadoEsquerdo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evento) {
      new Trem("esquerdo").start();
    }});
    add(m_chegarTremDoLadoEsquerdo);
    
    m_chegarTremDoLadoDireito.setText("Chegar Trêm do Lado Direito");
    m_chegarTremDoLadoDireito.setBounds(220,0,220,20);
    m_chegarTremDoLadoDireito.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evento) {
      new Trem("direito").start();
    }});
    add(m_chegarTremDoLadoDireito);
  }
}

A reta poderia ser desenhada quando o botão m_chegarTremDoLadoEsquerdo fosse pressionado.

Desde já agradeço.

Ué, e cadê o seu código de desenho?

Não tem cara… Hehe! Eh o q eu estou te pedindo. =)

Tentei de várias formas mas só perdi tempo. =(

Tudo o que eu quero é aprender a desenhar uma simples reta. Sabendo isso o resto eu consigo. =)

\o

Amigo só uma dica tente usar variaveis com nomes mas pequenos ou diretos,
se nao quando voce tiver que dar nome a uma variavel complexa seu nome
vai ficar muito grande:

Ex:
boolean validaSeOperacaoDeInsercaoNoBancoFoiConfirmada;
por
boolean validaInsercao;

Eu recomendo que você leia todos os meus artigos de Java 2D:
Escolhendo onde desenhar
Conhecendo o JFrame
Uma visão rápida sobre o Java 2D
Pintando no java 2D
O fantasma do Pacman (aqui tem um exemplo funcional)
Trabalhando com imagens

Se precisar fazer algo animado, veja também:
O loop de animação
A primeira animação
Desenho direto - Active Rendering

Outra boa fonte é o livro Killer Game Programming in Java, disponível online em:
http://fivedots.coe.psu.ac.th/~ad/jg/