Como faço isso?

Porque quando executo este código ele pede duas vezes a entrada?

import javax.swing.*;

import java.awt.Graphics;

public class i extends JApplet
{
	public void paint(Graphics quad)
	{
		int lado;
		String sLado;
		
		super.paint(quad);
		
		sLado = JOptionPane.showInputDialog("Digite o lado do quadrado");
		lado = Integer.parseInt(sLado);
		
		quad.drawString("*", 20, lado);
	}
}

Bom, na verdade estou tentando fazer o exercício 4.23 do livro Java Como Programar 4ed. fiz alguma coisa de exercício mas cheguei num ponto com mais ou menos essa estrutura acima e não ficou essa dúvida.

Boa noite!!!

Poste seu codigo de teste por favor…

att…

Primeiro eu fiz com System.out.print e funcionou. Então eu tentei passar para um applet e não funcionou.

import javax.swing.JOptionPane;

public class quadEmSystem
{
	public static void main(String args[])
	{
		int col, lin, lado, iLado, fLado;
		String sLado;
		
		sLado = JOptionPane.showInputDialog("Digite o tamanho do quadrado (de 1 a 20)");
		lado = Integer.parseInt(sLado);
		
		lin = lado - 2;
		iLado = lado;
		fLado = lado;
		
		while (lado >= 1)
		{
			System.out.print("*");
			--lado;
		}
		
		System.out.println();
		
		while (lin >= 1)
		{
			col = 1;
						
			while (col <= iLado)
			{
				if (col == 1 || col == iLado)
					System.out.print("*");
				else
					if (col != 1 || col != iLado)
						System.out.print(" ");
				++col;
			}
			
			--lin;
			System.out.println();
		}
		
		while (fLado >= 1)
		{
			System.out.print("*");
			--fLado;
		}
	}
}
import javax.swing.*;

import java.awt.Graphics;

public class Exercicio4º23 extends JApplet
{

	public void paint(Graphics quad)
	{
		int col, lin, lado, iLado, fLado;
		String sLado;
		
		super.paint(quad);
		
		sLado = JOptionPane.showInputDialog("Digite o tamanho do quadrado (de 1 a 20)");
		lado = Integer.parseInt(sLado);
		
		lin = lado - 2;
		iLado = lado;
		fLado = lado;
		
		while (lado >= 1)
		{
			quad.drawString("*", 200, lado);
			--lado;
		}
		
		quad.drawString(" ", 0, 0);
		
		while (lin >= 1)
		{
			col = 1;
						
			while (col <= iLado)
			{
				if (col == 1 || col == iLado)
					quad.drawString("*", col, iLado);
				else
					if (col != 1 || col != iLado)
						quad.drawString(" ", col, iLado);
				++col;
			}
			
			--lin;
			quad.drawString(" ", 0, 0);
		}
		
		while (fLado >= 1)
		{
			quad.drawString("*", fLado, 20);
			--fLado;
		}
	}
}

O texto do exercício é este:

4.23 Escreva um applet que lê o tamanho do lado de um quadrado e exibe um quadrado vazio desse tamanho com asteriscos, utilizando o método drawString dentro do método paint de seu applet. Utilize um diálogo de entrada para ler o tamanho fornecido pelo usuário. O programa deve trabalhar com quadrados de todos os tamanhos de lado possíveis, entre 1 e 20.

Não estou certo, mas o erro poderia estar ocorrendo na tua chamada de

super.paint(quad)

Mas qual seria o erro? Eu acho que tem que se chamar a versão herdada do método paint. Ou não???

O método paint é chamado sempre que a tela precisar. Seria melhor voce deixar essa lógica em outro método.

Faça a leitura do tamanho do quadrado no método start() e armazene isso em uma variável. No método paint() apenas desenhe o quadrado (sem perguntar ao usuário novamente).