/** Creates a new instance of grafico01 */
public grafico01() {
super("Gráficos - 1ª tentativa");
setBackground(Color.CYAN);
setSize(800,800);
setVisible( true );
}
/**
* @param args the command line arguments
*/
public void paint(Graphics g1)
{
Graphics2D g = (Graphics2D) g1;
g.setColor(Color.RED);
g.drawLine((int)0.1*getSize().width, (int)getSize().height/2,
(int)getSize().width - 20, (int)getSize().height/2);
}
public static void main(String[] args) {
// TODO code application logic here
grafico01 a = new grafico01();
a.setForeground(Color.CYAN);
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Você não deve sobrepor o método paint em uma classe derivada de JFrame; em vez disso, crie uma classe derivada de JPanel, sobreponha o método paintComponent (não paint), e insira uma instância dessa classe derivada de JPanel em seu JFrame. Parece difícil mas não é tão difícil assim. Vou dar um exemplo abaixo, que postei faz algum tempo.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.List;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
class MeuCanvas extends JPanel {
private int x1, x2, y1, y2;
private Color color;
// Lista dos pontos a serem desenhados
private List<Point> points = new ArrayList<Point>();
public void addNewPoint (int pX, int pY) {
points.add (new Point (pX, pY));
}
public void clearPoints() {
points.clear();
}
public void setColor (Color pColor) {
color = pColor;
}
/**
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
protected void paintComponent(Graphics pG) {
super.paintComponent(pG);
Graphics2D g2d = (Graphics2D) pG.create();
g2d.setPaint(color);
for (Point point : points) {
g2d.fillOval(point.x - 5, point.y - 5, 10, 10);
}
g2d.dispose();
}
}
/**
*/
public class TesteDesenho extends JFrame {
private static final long serialVersionUID = 1L;
private MeuCanvas meuCanvas = null;
/**
* This is the default constructor
*/
public TesteDesenho() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getMeuCanvas());
this.setTitle("Teste de Desenho");
}
/**
* This method initializes meuCanvas
*
* @return javax.swing.JPanel
*/
private JPanel getMeuCanvas() {
if (meuCanvas == null) {
meuCanvas = new MeuCanvas();
meuCanvas.addMouseMotionListener(new MouseMotionAdapter() {
/**
* @see java.awt.event.MouseMotionAdapter#mouseDragged(java.awt.event.MouseEvent)
*/
public void mouseDragged(MouseEvent pE) {
int x1 = pE.getX(); int y1 = pE.getY();
meuCanvas.addNewPoint (x1, y1);
meuCanvas.setColor (Color.RED);
repaint();
}
});
}
return meuCanvas;
}
public static void main(String[] args) {
TesteDesenho td = new TesteDesenho();
td.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
td.setVisible(true);
}
}