Como criar um aplicativo GUI em Java

Jan 31 2023
Visão geral Em java, swings são usados ​​para construir um aplicativo GUI. Possui diferentes recursos e é popularmente usado para criar aplicativos GUI em java.

Visão geral

Em java, os swings são usados ​​para construir um aplicativo GUI. Possui diferentes recursos e é popularmente usado para criar aplicativos GUI em java. Neste artigo, abordaremos tudo sobre a biblioteca swing em Java.

Java swing

Swing é desenvolvido em java puro. Os componentes do swing podem ter a mesma aparência em todas as plataformas e oferecer uma aparência conectável. Os componentes do swing são leves.

Exemplo:

Um programa java para exibir um criativo e exibir um quadro

importar javax.swing.*;

classe F1 estende JFrame{

F1() {

setSize(200,200);

setTitle(“GUI DEMO”);

setLocation(100,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

public static void main(String args[]){

F1 f= novo F1();

}

}

Saída:

javac F1.java

java F1

Hierarquia de contêiner

Contêiner de nível superior:

  • Lugar para outros componentes do swing se pintarem
  • Por exemplo. JFrame, JDialog, JApplet
  • Simplifique o posicionamento de componentes atômicos
  • Por exemplo, JPanel, JSplitPane, JTabbedPane
  • Componentes autossuficientes que apresentam informações e recebem informações do usuário
  • Por exemplo, JButton, JLabel, JComboBox, JTextField, JTable
  • JButton é uma implementação de um botão “push”
  • Os botões podem ser configurados e até certo ponto controlados por ações
  • JOptionPane facilita o pop-up de uma caixa de diálogo padrão que solicita aos usuários um valor ou os informa sobre algo.
  • Embora a classe possa parecer complexa devido ao grande número de métodos, quase todos os usos dessa classe são chamadas de uma linha para um dos métodos estáticos mostrados abaixo:

Assim como uma classe pode ter variáveis ​​e métodos como membros, a classe também pode conter outra classe chamada classe aninhada.

O conceito de classes internas foi introduzido no java 1.1

Existem vários benefícios de usar classes internas:

  • Tornando seu código mais legível
  • Permitir que as classes utilitárias sejam encapsuladas dentro da classe que as utiliza
  • Simplificando o processo de escrever uma classe, encorajando assim os desenvolvedores a serem mais orientados a objetos.

Os tipos de classe interna são os seguintes:

  • A classe interna do membro
  • classe interna estática
  • A classe interna local
  • a turma anônima

Manipulação de eventos usando a classe interna do membro:

importar javax.swing.*;

importar java.awt.*;

importar java.awt.event.*;

classe M1 estende JFrame

{

Recipiente c;

JButton b1, b2;

classe L1 implementa ActionListener

{

public void actionPerformed(ActionEvent ae){

if(ae.getSource()==b1)

{

JOptionPane.showMessageDialog(c, “Você clicou no botão 1”);

}

if(ae.getSource()==b2)

{

JOptionPane.showMessageDialog(c,"Você clicou no botão 2");

}

}

}

M1()

{

c=getContentPane();

c.setLayout(new FlowLayout());

b1=novo JButton(“Clique 1”);

b2= new JButton(“Clique 2”);

c.add(b1);

c.add(b2);

L1 a= novo L1();

b1.addActionListener(a);

b2.addActionListener(a);

}

public static void main(String args[]){

M1 f= novo M1();

f.setSize(200,200);

f.setTitle(“Clique no botão”);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setVisible(true);

}

}

Gerenciadores de layout

O gerenciador de layout do Java determina como os componentes serão organizados quando forem adicionados ao quadro. O pacote AWT inclui as seguintes classes de layout:

  • FlowLayout
  • BorderLayout
  • GridLayout

FlowLayout

Um layout de fluxo organiza os componentes em um fluxo direcional, muito parecido com as linhas de texto em um parágrafo, até que não haja mais espaço e depois na próxima linha.

Por padrão, os componentes são centralizados. O programador pode especificar o alinhamento usando um dos seguintes argumentos com o construtor:

  • FlowLayout.LEFT
  • FlowLayout.CENTER
  • FlowLayout.DIREITA

Um layout de borda apresenta um contêiner, organizando e redimensionando seus componentes para caber em cinco regiões: norte, sul, leste, oeste e centro.

Cada região pode conter no máximo um componente e é definida por uma constante correspondente: NORTH, SOUTH, EAAST, WEST e CENTER.

O programador pode especificar a região usando o seguinte no método add:

  • add(“Norte”, b1);
  • add(“Sul”,b2);
  • add("Leste",b3);
  • add("Oeste",b4);
  • add(“Centro”,b5);
  • add(BorderLayout.NORTH,b1);
  • add(BorderLayout.SOUTH,b2);
  • add(BorderLayout.EAST,b3);
  • add(BorderLayout.WEST,b4);
  • add(BorderLayout.CENTER,b5);

Observação2 : A compilação falha se o nome da constante não estiver em letras maiúsculas, conforme mostrado.

Nota3 : Acima também pode ser combinado.

JLabelGenericName

JLabel é uma área de exibição para uma string de texto curta ou uma imagem, ou ambos. Um rótulo não reage a eventos de entrada.

Programa:

importar java.awt.*;

importar javax.swing.*;

importar java.awt.event.*;

classe S2 estende JFrame{

Recipiente c;

JTextField txt1;

JButton btn1;

JLabel lbl1, lbl2;

S2(){

c=getContentPane();

c.setLayout(new FlowLayout());

lbl1= new JLabel(“Digite um número”);

txt1= novo JTextField(10);

btn1= new JButton("Resposta");

lbl2= new JLabel();

c.add(lbl1);

c.add(txt1);

c.add(btn1);

c.add(lbl2);

btn1.addActionListener(new L2());

}

public static void main(String args[]){

S2 frm= new S2();

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frm.setSize(250,150);

frm.setTitle(“Square Finder”);

frm.setVisible(true);

}

classe L2 implementa ActionListener{

public void actionPerformed(ActionEvent ae){

tentar{

int a= Integer.ParseInt(txt1.getText());

flutuante s= a*a;

lbl2.setText(“Quadrado=”+s);

}

catch(NumberFormatException e){

JOptionPane.showMessageDialog(c,"Por favor, insira o número inteiro");

txt1.setText(“ “);

txt1.requestFocus();

}

}

}

}

Manipulando Eventos do Teclado

Manipulando eventos do teclado

Programa:

importar java.awt.*;

importar javax.swing.*;

importar java.awt.event.*;

classe S7 estende JFrame{

Recipiente c;

JTextField txt1;

JButton btn1;

JLabel lbl1,lbl2;

S7(){

c=getContentPane();

c.setLayout(new FlowLayout());

lbl1= new JLabel(“Digite um número”);

txt1= novo JTextField(10);

btn1= new JButton("Resposta");

lbl2= new JLabel();

c.add(lbl1);

c.add(txt1);

c.add(btn1);

c.add(lbl2);

btn1.addActionListener(new L2());

btn1.addKeyListener(new L3());

}

public static void main(String args[]){

S7 frm= novo S7();

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frm.setSize(250,150);

frm.setTitle(“Square Finder”);

frm.setVisible(true);

}

classe L3 implementa KeyListener

{

public void keyPressed(KeyEvent ke)

{

if(ke.getKeyCode()==KeyEvent.VK_ENTER);

tentar{

int a= Integer.parseInt(txt1.getText());

flutuante s= a*a;

lbl2.setText('Quadrado='+s');

}

catch(NumberFormatException e){

JOptionPane.showMessageDialog(c,"Por favor, insira o número inteiro");

txt1.setText(“”);

txt1.requestFocus();

lbl2.setText(“”);

}

}

}

public void keyReleased(KeyEvent ke){}

public void keyTyped(KeyEvent ke){}

}

classe L2 implementa ActionListener{

public void actionPerformed(ActionEvent ae){

tentar{

int a= Integer.parseInt(txt1.getText());

flutuar s=a*a;

lbl2.setText(“Quadrado=”+s);

}

catch(NumberFormatException e){

JOptionPane.showMessageDialog(c,"Por favor, insira o número inteiro");

txt1.setText(“”);

txt1.requestFocus();

lbl2.setText(“”);

}

}

}

}

Manipulando Eventos do Windows

Manipulando Eventos do Windows

Programa :

importar java.awt.*;

importar javax.swing.*;

importar java.awt.event.*;

classe S8 estende JFrame{

Recipiente c;

JTextField txt1;

JButton btn1;

JLabel lbl1,lbl2;

S8(){

c=getContentPane();

c.setLayout(new FlowLayout());

lbl1= new JLabel(“Digite um número”);

txt1= novo JTextField(10);

btn1= new JButton("Resposta");

lbl2= new JLabel();

c.add(lbl1);

c.add(txt1);

c.add(btn1);

c.add(lbl2);

btn1.addActionListener(new L2());

btn1.addKeyLisener(new L3());

this.addWindowListener(new L4());

}

public static void main(String args[]){

S8 frm= novo S8();

frm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

frm.setSize(250,150);

frm.setTitle(“Square Finder”);

frm.setVisible(true);

}

classe L4 implementa WindowListener{

public void windowActivated(WindowEvent e){}

public void windowDeactivated(WindowEvent e){}

public void windowOpened(WindowEvent e){

JOptionPane.showMessageDialog(c,”Bem-vindo à Calculadora Quadrada”);

}

public void windowClosed(WindowEvent e){}

public void windowClosing(WindowEvent e){

int output= JOptionPane.showConfirmDialog(c,”Deseja sair”);

if(output==JOptionPane.YES_OPTION){

System.exit(1);

}

}

public void windowIconified(WindowEvent e){}

public void windowDeiconified(WindowEvent e){}

}

classe L2 implementa ActionListener{

public void actionPerformed(ActionEvent ae){

tentar{

int a=Integer.parseInt(txt1.getText());

flutuar s=a*a;

lbl2.setText(“Quadrado=”+s);

}

catch(NumberFormatException e){

JOptionPane.showMessageDialog(c,"Por favor, insira o número inteiro");

txt1.setText(“”);

txt1.requestFocus();

lbl2.setText(“”);

}

}

}

classe L3 implementa KeyListener{

public void keyPressed(KeyEvent ke){

if(ke.getKeyCode()==KeyEvent.VK_ENTER){

tentar{

int a= Integer.parseInt(txt1.getText());

flutuar s=a*a;

lbl2.setText(“Quadrado=”+s);

}

catch(NumberFormatException e){

JOptionPane.showMessageDialog(c,"Por favor, insira o número inteiro");

txt1.setText(“”);

txt1.requestFocus();

lbl2.setText(“”);

}

}

}

public void keyReleased(KeyEvent ke){}

public void keyTyped(KeyEvent ke){}

}

}

Conclusão

O Swing é desenvolvido em java puro e é amplamente utilizado, pois tem a mesma aparência em todas as plataformas e oferece uma aparência conectável. Espero que você tenha gostado deste artigo, deixe-me saber se houver algum feedback. :) ❤️