Bom minha duvida é no método paintComponent() da classe abaixo.
Queria, se possível, a ajuda dos amigos para minha compreensao do porque o método paintComponent é chamando dentro dele mesmo?
Já estudei recursividade, é isso que acontece no método abaixo? Se não. Desculpe a inocencia.
Segue o código abaixo:
//Desenha duas linhas que se cruzam em um panel
import java.awt.Graphics;
import javax.swing.JPanel;
public class DrawPanel extends JPanel{
//desenha um X a partir dos cantos do painel
public void paintComponent(Graphics g){
//Chama paintComponent para assegurar que o painel é exibido corretamente
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
//Desenha uma linha a partir do canto superior esquerdo até o inferior direito
g.drawLine(0, 0, width, height);
} //Fim do método paintComponent
} //Fim da classe DrawPanel
Segue o código da classe para executar o aplicativo:
//Aplicativo para exibir uma DrawPanel
import javax.swing.JFrame;
public class DrawPanelTest {
public static void main(String args[]){
//Cria um painel que contém nosso desenho
DrawPanel panel = new DrawPanel();
//Cria um novo frame para armazenar o painel
JFrame application = new JFrame();
//configura o frame para ser encerrado quando é fechado
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel); // adiciona o painel ao frame
application.setSize(250, 250); // configura o tamanho do frame
application.setVisible(true); // torna o frame visível
} //Fim do main
} //Fim da classe DrawPanelTest
Se os amigos puderem opinar a respeito do código dando dicas de melhoras no código-fonte, também aceito XD
Ele não chama paintComponent(g);
Ele chama super.paintComponent(g);
Essa palavra super equivale ao método paintComponent da classe pai
Antes de executar o paintComponent da classe em questão ele executa da classe pai primeiro
A sua classe herda JPanel que por sua vez herda JComponent
Na Classe JComponent possui um método paintComponent
E é esse método que é executado quando vc chamou o super.paintComponent
Bom minha duvida é no método paintComponent() da classe abaixo.
Queria, se possível, a ajuda dos amigos para minha compreensao do porque o método paintComponent é chamando dentro dele mesmo?
Já estudei recursividade, é isso que acontece no método abaixo? Se não. Desculpe a inocencia.
Segue o código abaixo:
//Desenha duas linhas que se cruzam em um panel
import java.awt.Graphics;
import javax.swing.JPanel;
public class DrawPanel extends JPanel{
//desenha um X a partir dos cantos do painel
public void paintComponent(Graphics g){
//Chama paintComponent para assegurar que o painel é exibido corretamente
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
//Desenha uma linha a partir do canto superior esquerdo até o inferior direito
g.drawLine(0, 0, width, height);
} //Fim do método paintComponent
} //Fim da classe DrawPanel
Segue o código da classe para executar o aplicativo:
//Aplicativo para exibir uma DrawPanel
import javax.swing.JFrame;
public class DrawPanelTest {
public static void main(String args[]){
//Cria um painel que contém nosso desenho
DrawPanel panel = new DrawPanel();
//Cria um novo frame para armazenar o painel
JFrame application = new JFrame();
//configura o frame para ser encerrado quando é fechado
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel); // adiciona o painel ao frame
application.setSize(250, 250); // configura o tamanho do frame
application.setVisible(true); // torna o frame visível
} //Fim do main
} //Fim da classe DrawPanelTest
Se os amigos puderem opinar a respeito do código dando dicas de melhoras no código-fonte, também aceito XD
Tentando fazer a segunda figura deste estudo de caso do livro Deitel que são as linhas que se estendem em todos os cantos, não consegui fazer somente as linhas que seriam da direita para a parte abaixo do painel.
Segue aí a classe com as extremidades que consegui fazer:
Classe: JanelaTeste que seria a Classe: DrawPanelTest
package pagina107;
import javax.swing.JFrame;
public class JanelaTeste {
public static void main (String[] args){
Janela janela = new Janela();
JFrame application = new JFrame();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add( janela );
application.setSize( 275, 300 );
application.setVisible( true );
}
}
Enfim, peguei uma ajuda para esse exercício neste tópico:
Visando tentar me ajudar e também aos demais do grupo, achei que ficou feio o código, rsrs, mas talvez possa clarear para alguém essa minha coisa feia aí, rsrs!