Interfaces gráficas com Java Swing

Para criarmos uma melhor estrutura em uma aplicação com interface visual, podemos nos utilizar de 3 elementos da biblioteca Java Swing para criação de um containers. O container é o local onde podemos inserir  campos de textos, menus, botões e assim criarmos uma aplicação com elementos visuais. Esses containers podem ser dos seguintes tipos:

– JFrame: janela principal do programa.

– JDialog: janela para diálogos.

– JApplet: janela para Applets.

No primeiro exemplo, veremos como criar uma janela com a classe JFrame, utilizando um layout do tipo FlowLayout e inserindo botões na mesma. Para isso, crie uma classe chamada Botao e digite o código a seguir, lembrando que deverão estar dentro do método Main:

  JFrame frame = new JFrame("Bem-vindo");
  // Definindo margem superior, esquerda, largura e altura e altura respectivamente
  frame.setBounds(200, 100, 300, 300);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  // Criando um layout do tipo FlowLayout
  FlowLayout layout = new FlowLayout();

  Container caixa = frame.getContentPane();
  caixa.setLayout(layout);

  for (int i = 1; i <= 10; i++) {
      caixa.add(new JButton("Botão " + i));
  }

O resultado deverá ser algo semelhante a esta imagem:

No próximo exemplo, vamos criar um container do tipo JFrame, escolhendo um layout do tipo GridLayout. Nele, vamos inserir 3 botões e 1 campo de texto, dividindo a janela em grade, no formato 2 x 2 (duas linhas e duas colunas). Para isso, crie uma outra classe chamada Grade, com o método Main e o seguinte código:

JFrame frame = new JFrame();
frame.setVisible(true);
frame.setBounds(200, 100, 200, 300);

JPanel c = new JPanel();

c.setLayout(new GridLayout(2, 2));
c.add(new Button("um"));
c.add(new TextField(5));
c.add(new Button("dois"));
c.add(new Button("três"));

frame.setContentPane(c);

Retornando valores

Para termos uma aplicação que retorne valores de um formulário por ex., e que esses valores possam ser salvos em um arquivo .txt ou até mesmo enviado para o banco de dados, podemos criar botões e incluir ações a ele. Neste exemplo, criaremos uma classe chamada Arquivo, onde criaremos um arquivo salvaremos os valores de um formulário neste arquivo criado.

public class Arquivo {
	Arquivo() {
	}

	public void escreve(String texto) throws IOException {
        // Criando o arquivo.txt
		File file1 = new File("arquivo.txt");
		FileWriter writer = new FileWriter(file1);
		PrintWriter arquivo = new PrintWriter(new FileWriter("arquivo.txt"));
		arquivo.println(texto);
		arquivo.close();
	}
}

Agora, criaremos a classe Formulario, que conterá os campos a serem salvos no arquivo e as ações do botão cadastrar.

public class Formulario{
	public Formulario() {
		initComponents();
	}

	private void initComponents() {
		JFrame frame = new JFrame("Envio de dados.");
		JPanel panel = new JPanel();
		JScrollPane jScrollPane1 = new JScrollPane();
		JTextArea jTextArea1 = new JTextArea(5, 10);
		JTextField jText1 = new JTextField(10);
		JButton jButton1 = new JButton("Cadastrar");
		JLabel jLabel1 = new JLabel("Nome: ");
		JLabel jLabel2 = new JLabel("Comentário: ");

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.pack();

		panel.add(jLabel1);
		panel.add(jText1);
		panel.add(jLabel2);
		panel.add(jTextArea1);
		panel.add(jButton1);

		frame.setContentPane(panel);
		frame.pack();
               // Criando a ação do botão Cadastrar
		jButton1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {
				try {
					jButton1ActionPerformed(evt);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
               // Inserindo os dados digitados no arquivo criado pela classe Arquivo
			private void jButton1ActionPerformed(ActionEvent evt) throws IOException {
				Arquivo arquivo1 = new Arquivo();
				String texto = jTextArea1.getText() + ", " + jText1.getText();
				arquivo1.escreve(texto);

			}
		});

	}
       // Dentro do método Main será criada uma instancia de Formulario para ser executada
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new Formulario();
			}
		});
	}

}

Compile a classe Formulário e veja o resultado. Ao clicar no botão cadastrar, deverá ser criado um arquivo chamado arquivo.txt em seu projeto. Abra este arquivo e veja se os dados foram salvos com sucesso.

Complementando o exemplo, podemos criar uma janela do tipo JDialog para dar uma mensagem de dados cadastrados com sucesso.

Em um próximo tutorial mostrarei como fazê-lo. Até mais.

Autor: Daniel Brandão

Desenvolvedor Web e Professor. Gosto de debater, escrever e comentar a respeito da vida, tecnologia, o pensar, a sociedade, a vida cotidiana e da vida vindoura.

Uma consideração sobre “Interfaces gráficas com Java Swing”

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.