Caros, o pequeno codigo abaixo quando executado via terminal funciona numa boa, mas se executar ele pelo eclipse ele abre a janela mas nao faz o drawLine, será que alguem sabe me dizer por que?
Lembrando sempre que você não deve sobrescrever paint diretamente, e sim, paintComponent. O método paint é dividido em três etapas.
PaintComponent: Pinta o componente em si;
PaintBorder: Pinta uma borda em torno do componente;
PaintChildren: Chama os métodos de pintura que dos objetos que estão sobre o componente.
Como a sua intenção é aprender Swing, a maneira mais correta de fazer uma pintura seria através de um panel, que fica definido com contentPane de seu Frame. Isso também dá independência da parte de pintura em relação a janela utilizada (fica muito fácil transportar esse painel para um Applet, JInternalPane ou JDialog).
fabricioff
Acho que meu eclipse ta maluco de vez, os dois exemplos de vcs abrem somente uma tela cinza, mas nao mostra a linha.
ViniGodoy
Muito estranho, esse programa eu testei e funcionou.
Não custa nada conferir a versão do seu JDK também…
Deh
ah, alias mals ae
eu não entendo muito de swing, lembro de ter visto um exemplo em algum lugar que usava o “paint”…
Mas é estranho não ter funcionado… testei pelo terminal e pelo Eclipse, e funcionou… como o ViniGodoy disse, confira o seu jdk…
ViniGodoy
Eu achei a sun meio infeliz.
Tudo começou na AWT, onde todos deviam sobrescrever paint.
Depois, veio o Swing. Vida nova, mundo novo. Ao invés de deixarem o método paint para fazer as vias do paintComponent e chamar o atual paint de outra coisa (como paintComplete), pediram para que programadores esquecessem que o método paint e fossem para paintComponent.
Isso é uma tragédia. Se você comprar um livros mais atualizados sobre construção de componentes, verá que a recomendação é sempre sobrescrever paintComponent.
Entretanto, sobrescrevendo paint também funciona. Mas você terá um comportamento problemático se o usuário tentar colocar objetos sobre o seu componente, ou se ele tentar usar uma das classes de “border”.