Olá pessoal, primeiro post aqui do blog programandojava, e neste post estarei explicando um tutorial básico de swing e aplicações GUI.

Basicamente, iremos desenhar retangulos e ovais em um JFrame, usando os metodos drawRect e drawOval do swing.

Vamos lá?

Para começarmos, vamos criar uma classe chamada Shapes, e vamos extender JPanel.

Nesta classe iremos ter uma variavel de instancia, escolha, que determina se paintComponent (método de JPanel que iremos reescrever) devera desenhar retângulos ou ovais.

Criaremos também um construtor para esta classe, passando o valor do parametro userChoice para inicializarmos escolha.

Estamos assim até entao:

import javax.swing.JPanel;

public class Shapes extends JPanel{
	private int escolha;

	public Shapes (int userChoice){
		escolha = userChoice;
	}
}

O método paintComponent (Graphics g) realiza o desenho real. Para funcionar, a primeira função deste método, deverá ser uma chamada para super.paintComponent.

Criaremos agora um laço for dentro do método paintComponent para podermos desenhar N vezes o retângulo ou o oval.

Faremos um switch na escolha do usuário. Se for 1, iremos desenhar o retângulo, se for 2, o oval.

Caso for 1, iremos chamar o método Graphics drawRect, este método requer quatro argumentos.

Os dois primeiros argumentos representam as coordenadas X e Y do canto superior esquerdo do retangulo, os outros dois argumentos representam a largura e a altura.

Caso for 2, iremos chamar o método Graphics drawOval, este método também requer os mesmos argumentos.

Neste tutorial, iniciaremos os retangulos em uma posição de 10px para baixo e a direita do canto esquerdo, e a cada passada do laço for moveremos outros 10px para baixo e para a direita. A largura e a altura, iniciaremos com 50px e aumentam 10px a cada passada do laço. Veja:

iimport java.awt.Graphics;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Shapes extends JPanel{
	private int escolha;

	public Shapes (int userChoice){
		escolha = userChoice;
	}

	@Override
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);

		for (int i = 0; i < 10; i++) {

		switch (escolha) {
		case 1:
			g.drawRect(10+i*10, 10+i*10, 50+i*10, 50+i*10);
			break;
		case 2:
			g.drawOval(10+i*10, 10+i*10, 50+i*10, 50+i*10);
			break;
		}
		}
	}
}

Agora criaremos uma outra classe, chamada ShapeTest.

Nesta classe teremos o nosso método Main

Iremos criar uma variável do tipo String chamada input e receberemos o que o usuário digitar através do JOptionPane.showInputDialog ( Entrada de dados do swing )

Criaremos uma outra variavel chamada escolha e falamos que ela ira receber o valor que retornar do JOptionPane, porém para isso, devemos realizar um Casting para converter a String digitada em int.

Após isso, criaremos uma instância da classe Shapes, a mesma classe criada anteriormente, daremos o nome de painel e passaremos a escolha como parâmetro para o construtor.

Agora vamos criar uma instancia de JFrame e daremos o nome de application.

Adicionaremos o nosso painel em nosso painel, application.
Definiremos o tamanho desejado, neste tutorial estou definindo que ele será de 300 por 300.
E finalmente deixaremos nosso frame, application, visível.

Veja a seguir:

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class ShapesTest {
	public static void main(String[] args) {
		String input = JOptionPane.showInputDialog("Digite 1 para desenhar retangulos\n"+
												   "Digite 2 para desenhar elipses");

		int escolha = Integer.parseInt(input); // Converter o input do user para inteiro

		// Criar painel com a entrada do usuario
		Shapes painel = new Shapes(escolha);

		JFrame application = new JFrame();
		application.add(painel);
		application.setSize(300, 300);
		application.setVisible(true);
	}
}

Ao executar o programa e ao digitar 1 na caixa de texto, obteremos esta tela:
Retangulos

Ao digitar 2, obteremos esta tela:

Espero que tenham gostado e até a proxima.