Olá galera, estou precisando fazer o desenho de linhas neste meu projeto, mas estou tendo algumas dificuldades:
1 - Desenho uma linha na tela, mas quando alguma coisa (como outro janela) passa por cima dela, a linha desaparece. Para tentar solucionar, coloquei um repaint() a cada 10ms, mas dessa forma a linha fica piscando sem parar. O que eu poderia fazer?
2 - Como eu poderia definir a largura de uma linha?
packageguj;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.SwingUtilities;// Nunca sobreponha diretamente o método "paint" do JFrameclassLinhaPanelextendsJPanel{@OverrideprotectedvoidpaintComponent(Graphicsg){super.paintComponent(g);Graphics2Dg2d=(Graphics2D)g.create();// nunca trabalhe diretamente sobre g, apenas sobre uma cópia de gg2d.setColor(Color.GREEN);g2d.drawLine(100,100,500,500);g2d.dispose();// toda vez que você usa "create" é necessário usar "dispose"}}publicclassExemploDesenhoLinhaextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJPanelpnlLinha=null;privateJPanelgetPnlLinha(){if(pnlLinha==null){pnlLinha=newLinhaPanel();pnlLinha.setLayout(newBorderLayout());}returnpnlLinha;}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){ExemploDesenhoLinhathisClass=newExemploDesenhoLinha();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}publicExemploDesenhoLinha(){super();initialize();}privatevoidinitialize(){this.setSize(600,600);this.setContentPane(getJContentPane());this.setTitle("Exemplo de Desenho de uma Linha");}privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(newBorderLayout());jContentPane.add(getPnlLinha(),BorderLayout.CENTER);}returnjContentPane;}}
E
entanglement
A propósito, usar “m_” para indicar variáveis-membro em uma classe só é costumeiro em C++ (em Java não é costume usar isso).
É mais ou menos como você dizer “lograr” - é uma palavra válida em português, mas normalmente você a usa para dizer “enganar”, não “conseguir”, embora no dicionário também esteja como “conseguir” ou “alcançar”.
Em espanhol, essa palavra “lograr” quer dizer só “conseguir”.
Em português, “Fui logrado” == “fui enganado”
Em espanhol, “Logró llegar a director” = “conseguiu chegar a diretor”.
G
gabrielost
Obrigado entanglement, agora só me resta saber como aumentar a largura de uma linha. =)