Dúvida - JOptionPane dentro de JPanel

2 respostas
pagrippa

Boa noite.

Novamente eu com minhas dúvidas, hehe... Acho q to começando a virar um porre aqui no forum, rsrs.

Fiz um aplicativo que recebe de um usuário a quantidade de colunas que o mesmo quer q o aplicativo desenhe em uma JPanel.

Pra isso, usei o método showInputDialog dentro do método paintComponent do JPanel.

Só que, na hora de executar o aplicativo, o frame com o panel abre, aparece só o desenho da janela de entrada de dados, mas fik ali, tentando carregar, e na janela de comando fik dando um monte de exception.

Por acaso o paintComponent não aceita métodos graficos, tipo janelas de entrada de dados, dentro dele?

De qualquer maneira, vou tentar arrumar criando um método para configurar a entrada do numero de colunas, usando variável de instância.

Mas, se alguem quiser opinar sobre o assunto enquanto isso, pra eu me localizar melhor no assunto, ficarei grato.

Segue o codigo q fiz:

import javax.swing.JPanel;
import java.awt.Graphics;
import javax.swing.JOptionPane;

public class DrawPanel extends JPanel
{

   public void paintComponent( Graphics g )
   {

      super.paintComponent( g );

      JOptionPane myJOptionPane = new JOptionPane();

      int width = getWidth();
      int height = getHeight();

      String column;
      int columnNumber;
      int counterPaintLine = 1;

      column = myJOptionPane.showInputDialog( "Digite a quantidade de colunas:" );
      columnNumber = Integer.parseInt( column );

      while ( counterPaintLine < columnNumber )
      {

         g.drawLine( (width / columnNumber) * counterPaintLine, 0, (width / columnNumber) * counterPaintLine++, height );

      }

   }

}

Desculpem o incomodo.

2 Respostas

Henrique.tenorio

Crie um construtor e chame o dialogo dentro dele:

column = myJOptionPane.showInputDialog( "Digite a quantidade de colunas:" ); columnNumber = Integer.parseInt( column );

Não esqueça de declarar as variáveis como campos (Globais) e não é necessario criar um objeto JOptionPane, pois ele possui métodos staticos, use somente o nome da classe seguido pelo metodo
JOptionPane.showInputDialog(null,"");

pagrippa

Bom… ja resolvi declarando as variáveis em questão como campos, e criando um método para o recebimento dos valores dessas variáveis, para que nao chame o showInputMessage de ntro do paintComponent.

Valew pela ajuda, vou testar da tua forma

Quanto a não precisar criar objeto JOptionPane, ainda nao cheguei na parte de métodos static, então acho melhor seguir criando os objetos, não?? Afinal, ainda nao sei quando tem q criar, e quando nao tem q criar o objeto.

Bom, enfim, mais uma vez recebi ajuda totalmente valida. A hora q eu tiver cacife pra ajudar, podem apostar q estarei tentando sempre.

Valew

Criado 26 de janeiro de 2011
Ultima resposta 26 de jan. de 2011
Respostas 2
Participantes 2