Boa tarde a todos!
Poderiam me ajudar neste exercício? A primeira parte eu consegui fazer, mais a segunda parte não estou conseguindo. Vou postar o código que fiz.
/*a) Crie o projeto na captura de tela esquerda da Figura 4.21.Esse projeto desenha * linhas a partir do canto superior esquerdo, estendendo as linhas ate que elas cubram * a metade superior esquerda do painel.Uma abordagern e dividir a largura e a altura em * um numero igual de passos (descobrimos que 15 passos funcionam bem).A primeira * extremidade de uma linha sempre estara no canto superior esquerdo(0, 0). A segunda * extremidade pode ser encontrada iniciando no canto inferior esquerdo e movendo-se para * cima um passo vertical e para a direita um passo horizontal. Desenhe uma linba entre as * duas extremidades.Continue movendo-se para cima e para a direita para encontrar cada * extremidade sucessiva.A figura deve ser dimensionada de maneira correspondente a medida * que voce redimensiona a janela. b) Modifique sua resposta na parte(a) para que as linhas se estendam a partir de todos os quatro cantos,como mostrado na captura de tela direita da Figura 4.21. As linhas nos cantos opostos devem interseccionar no meio.*/importjava.awt.Graphics;importjavax.swing.JPanel;@SuppressWarnings("serial")publicclassDrawPanelextendsJPanel{publicvoidpaint(Graphicsg){super.paint(g);intlargura=getWidth();intaltura=getHeight();intcontador=1;intpassos=0;while(altura-passos>=0){g.drawLine(0,0,passos,altura-passos);passos=passos+15;contador++;}}}importjavax.swing.JFrame;publicclassTestaDrawPanel{publicstaticvoidmain(String[]args){DrawPanelpainel=newDrawPanel();JFrameaplicacao=newJFrame();aplicacao.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);aplicacao.add(painel);aplicacao.setSize(250,250);aplicacao.setVisible(true);}}
a parte b) que não consigo de jeito nenhum, acho que não peguei bem o conceito da coisa toda. Obrigado a todos
Valeu amigo, só hoje que vi! Tinha até pulado esse exercício, vou usar seu código e ver como fica…Obrigado
V
ViniGodoy
Note os detalhes.
Jamais sobrescreva o método paint de qualquer filho de JComponent (JPanel, JLabel, etc…). No lugar, você sobrescreve o método paintComponent;
Jamais altere o estado do objeto Graphics recebido por parâmetro, o ideal é fazer uma cópia de segurança, e descarta-la ao final do método:
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create(); //Cópia
//Use g2d para desenhar
g2d.dispose();
}
E
ederdiablo
Vini…entendi nada rsrs…ainda sou novato em java, por favor, seja mais detalhista.
Abraço
E
ederdiablo
Gilvani…
Achei esse aqui procurando na net…só não me lembro onde rs…acho q tem mais a ver com o que o livro pede
packagepag.cemtreze;importjava.awt.Graphics;importjavax.swing.JPanel;publicclassDrawPanelAextendsJPanel{privatestaticfinallongserialVersionUID=1L;publicvoidpaintComponent(Graphicsg){super.paintComponent(g);intlarg=getWidth();// largura do painelintalt=getHeight();// altura do painel// número de passosintnPassos=15;// tamanho dos passos ( 15 passos )intpassoX=larg/nPassos;intpassoY=alt/nPassos;intc=1;// contador// desenhandowhile(c<=nPassos){// origem superior esquerdag.drawLine(0,0,passoX*c,alt-(passoY*c));// origem superior direitag.drawLine(larg,0,larg-(passoX*c),alt-(passoY*c));// origem inferior esquerdag.drawLine(0,alt,larg-(passoX*c),alt-(passoY*c));// origem inferior direitag.drawLine(larg,alt,passoX*c,alt-(passoY*c));// incrementa contadorc++;}}}
V
ViniGodoy
enderdiablo, pensei que era vc que estava respondendo a dúvida, não com dúvidas, hehehehe.
Estava comentando que seu código faz algo certo, usar o paintComponent. Note que o código original do colega usa o paint.
Você tem alguma dúvida?
O que acontece é que eu comecei esse ano na facul, então tô bem cabaço ainda haha. Como estou de férias, queria dar uma forçada na barra, pra ver se me adianto pro próximo semestre, aí me indicaram o livro do Deitel e parei no mesmo exercício que o nosso amigo acima, que acabou me dando uma luz com a parte que ele já tinha resolvido, mas pelo que vc tá dizendo parece que essa não é a melhor maneira, certo? A propósito, até onde o livro ensinou, não tem muita coisa de parte gráfica, esse exercício é opcional, tipo desafio, manja?
Abração
E
ederdiablo
Xiiii viajei Vini…agora que eu entendi.
Vc tá dizendo que o método que eu utilizei está correto…q maravilha haha
É o sono…desculpa ae hehe
Valeu!
G
gilvani_lima
ViniGodoy:
Note os detalhes.
Jamais sobrescreva o método paint de qualquer filho de JComponent (JPanel, JLabel, etc…). No lugar, você sobrescreve o método paintComponent;
Jamais altere o estado do objeto Graphics recebido por parâmetro, o ideal é fazer uma cópia de segurança, e descarta-la ao final do método:
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create(); //Cópia
//Use g2d para desenhar
g2d.dispose();
}
Só hoje que responder…Valeu pela dica Vini, lembrarei disto para sempre…valeu mesmo…Obrigado a todos