[tutorial] java swing: parte 2

Postagem de conteúdo sobre programação java
Post Reply
User avatar
Kodo no Kami
Admin
Admin
Posts: 725
Joined: Fri Jan 02, 2015 1:56 pm
Contact:

[tutorial] java swing: parte 2

Post by Kodo no Kami » Sat Jul 08, 2017 3:25 am

e ae galera continuando o tutorial de java swing nessa parte vamos aprender a criar um botão, para começar criamos uma janela como no tutorial anterior (ou carregar o codigo anterior XD)

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
    }
}
Image

para a gente criar um botão temos que instanciar a classe JButton (javax.swing.JButton), podemos passar como argumento para ela o texto no botão

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
    }
}
com o botão criado podemos adicionar ele na janela com o metodo add no objeto da janela

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	
	janela.add(botao);
    }
}
Image

é possivel colocar outro botão bastando instanciar outro objeto JButton, so que existe um pequeno problema o segundo botão ira sobrepor o primeiro botão

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao, botao2;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	botao2 = new JButton("esse é o segundo botao");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	
	janela.add(botao);
	janela.add(botao2);
    }
}
Image

o motivo do botão sobrepor o outro porque não existe nenhum layout na janela então vamos deixar o layout absoluto (não se preocupe mais para frente vamos falar mais sobre os layouts), para a gente colocar o layout absoluto passamos como argumento null para o metodo setLayout da nossa janela

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao, botao2;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	botao2 = new JButton("esse é o segundo botao");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	janela.add(botao);
	janela.add(botao2);
    }
}
se a gente executar o codigo não sera exibido nenhum botão apenas uma janela vazia devido eles esta com tamanho 0x0, então temos que redimensionar os botões usando os metodos setSize e setLocation para colocar eles com um tamanho especifico e uma posição especifica na janela (tambem podemos usar o setBounds e passar os 4 paremetros ao mesmo tempo)

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao, botao2;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	botao2 = new JButton("esse é o segundo botao");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(20,30, 200, 50);
	botao2.setBounds(20,90, 200, 50);
	
	janela.add(botao);
	janela.add(botao2);
    }
}
Image

podemos modificar o texto no botão usando o metodo setText no objeto do botão

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(20,30, 200, 50);
	botao.setText("novo texto");
	
	janela.add(botao);
    }
}
ou ler esse texto com o metodo getText

Code: Select all

package kodo;

import javax.swing.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("meu botao");
	String texto;
	
	janela.setBounds(200,200,300,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(20,30, 200, 50);
	texto = botao.getText();
	System.out.println(texto);
	
	janela.add(botao);
    }
}
é possivel mudar a cor do texto usando o metodo setForeground, passamos como argumento para ele o atributo da cor no Color (java.awt.Color)

Code: Select all

package kodo;

import javax.swing.*;
import java.awt.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao, botao2;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("sair da matrix");
	botao2 = new JButton("fica na matrix");
	
	janela.setBounds(200,200,350,150);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(10,30, 150, 50);
	botao.setForeground(Color.red);
	botao2.setBounds(180,30, 150, 50);
	botao2.setForeground(Color.green);
	
	janela.add(botao);
	janela.add(botao2);
    }
}
Image

tambem é possivel mudar a cor de fundo usando o metodo setBackground

Code: Select all

package kodo;

import javax.swing.*;
import java.awt.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao, botao2, botao3, botao4;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("c/c++");
	botao2 = new JButton("pascal");
	botao3 = new JButton("perl");
	botao4 = new JButton("php");
	
	janela.setBounds(200,200,350,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	janela.getContentPane().setBackground(Color.black);
	
	botao.setBounds(10,30, 150, 50);
	botao.setBackground(Color.orange);
	botao2.setBounds(180,30, 150, 50);
	botao2.setBackground(Color.yellow);
	botao3.setBounds(10,100, 150, 50);
	botao3.setBackground(Color.gray);
	botao4.setBounds(180,100, 150, 50);
	botao4.setBackground(Color.green);
	
	janela.add(botao);
	janela.add(botao2);
	janela.add(botao3);
	janela.add(botao4);
    }
}
Image

para mudar a fonte usamos o metodo setFont, temos que passar como argumento para ele um objeto do tipo font (java.awt.Font)

Code: Select all

package kodo;

import javax.swing.*;
import java.awt.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("ok");
	Font minhafonte = new Font("arial",Font.BOLD, 20);
	
	janela.setBounds(200,200,350,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(10,30, 150, 50);
	botao.setFont(minhafonte);
	
	janela.add(botao);
    }
}
Image

podemos desativar um botão com o metodo setEnabled passando como argumento false, para ativar o botão novamente basta passar como argumento o true

Code: Select all

package kodo;

import javax.swing.*;
import java.awt.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("ok");
	
	janela.setBounds(200,200,350,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(10,30, 150, 50);
	botao.setEnabled(false);
	
	janela.add(botao);
    }
}
para manipular eventos como o apertar de um botão usamos o evento ActionListener (não é o unico existem outros), para a gente usar esse evento usamos o metodo setActionListener no botão, passamos como argumento para ele o metodo ActionListener (java.awt.event.ActionListener), nessa classe existe um metodo que é o actionPerformed que temos que sobrescrever ele com o nosso metodo com isso quando o botao for pressionado sera chamado esse metodo

Code: Select all

package kodo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("minha mensagem");
	
	ActionListener acao = new ActionListener() {
	    
	    @Override
	    public void actionPerformed(ActionEvent e) {
	    }
	};
	
	janela.setBounds(200,200,350,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(10,30, 150, 50);
	botao.addActionListener(acao);
	
	janela.add(botao);
    }
}
podemos por exemplo exibir uma janela com uma mensagem usando a classe JOptionPane (javax.swing.JOptionPane) com o metodo showMessageDialog dele (ou qualquer outra coisa)

Code: Select all

package kodo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Principal {
    private static JFrame janela;
    private static JButton botao;
    
    public static void main(String[] args){
	janela = new JFrame("minha janela");
	botao = new JButton("java");
	
	ActionListener acao = new ActionListener() {
	    
	    @Override
	    public void actionPerformed(ActionEvent e) {
		JOptionPane.showMessageDialog(null, "tuto by kodo no kami");
	    }
	};
	
	janela.setBounds(200,200,350,200);
	janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
	janela.setVisible(true);
	janela.setLayout(null);
	
	botao.setBounds(10,30, 150, 50);
	botao.addActionListener(acao);
	
	janela.add(botao);
    }
}
Image

então galerinha esse tutorial não termina aqui não tem muitas coisas que vou abordar em futuras partes dele \o, tambem vou continuar o tutorial de blitz basic (assim que o kodo toma vergonha na cara e instalar o windows novamente kkk), alem de precisar terminar o ebook de asm esse ano tambem (pqp o kodo ta é fudido isso sim u.u ), então galera ate a proxima parte desse tutorial ou de algum outro \o

by kodo no kami
Image

que desagradavel ~ mirai kuriyama

Post Reply

Return to “Java”