FORUM DARKERS

Tecnologia & Informática => Programação => Java => Topic started by: Anonymous on 15 de December , 2007, 05:36:31 AM

Title: Aulas java - criando botões da maneira correta
Post by: Anonymous on 15 de December , 2007, 05:36:31 AM
Botões simples em java

Componente JButton() - botão simples

Nesta aula vou mostrar como criar um botão para escolha única em java.

(//http://i24.servimg.com/u/f24/11/75/65/45/button12.jpg)


Segue o código:

button.java
/** @autor: Triplo X  **/

// importando classes
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;   // interface gráfica.
 import javax.swing.JFrame;    // classe para tela.
 import javax.swing.JLabel;   // classe para legenda.
 import javax.swing.JPanel;   // classe p/ painel.
 import javax.swing.JTextArea;   /** campo de texto (os resultados aparecerão
                               um abaixo do outro nesta área. **/

import javax.swing.JTextField;   // classe para campo de texto de uma linha.
import javax.swing.JButton;     //  classe para botão.
 /*************************************************************/
 public class button {    // classe principal
     public static void main(String[] args) {
         JFrame tela = new JFrame("by: Triplo X");   // criando a janela.
         tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          // cria botões com ações de fechar a janela.

          JLabel labelDes1 = new JLabel("Digite o valor e");
          JLabel labelDes2 = new JLabel("selecione a opção:");
          JLabel labelDes3 = new JLabel("  Triplo X = DARK BOMBER  ");
          JLabel labelDes4 = new JLabel("www.forum-informatica.rg.com.br");
           
          final JTextArea minhaAreaTexto = new JTextArea(10, 20);   // criando área de texto.
          minhaAreaTexto.setEditable(false);   /** define que o conteúdo(o texto)
                                           não pode ser alterado
                                               */
                                             
          JButton botaoSomar = new JButton("+");
          JButton botaoSubtrair = new JButton("-");
          JButton botaoMultiplicar = new JButton("x");
          JButton botaoDividir = new JButton("/");                                   

          JLabel labelDescricao = new JLabel("Valor: ");   // cria rótulos.
          final JLabel labelValor = new JLabel("0");   // ("0" é o texto inicial).
           //precisam ser declarados como final p/ permitir o acesso da classe interna
         
                                                                             
          // precisam ser declarados como final p/ permitir o acesso da classe interna.                             
          final JTextField meuCampoTexto = new JTextField(8);  /** aqui é criado
          * um campo de texto de uma linha. Neste campo serão digitados os valores para se
          * realizer a soma.
          */
          meuCampoTexto.setText("0");  /* define texto inicial do campo acima;
            como o campo vai receber valores, tem que ficar com valor "0"*/
         
           
           /**************** início de uma classe interna para somar ******************/
class CalcularListener implements ActionListener {  // explicação abaixo:
              /** início de uma classe interna
               * Ela está implementada dentro do Método main da classe Exemplo.
               *  Ela só pode ser vista apenas dentro da classe ou método que
               *  foi implementada, neste caso, a interfece "ActionListener".*/
             
              // "public void" é a implementação do método da interface".
              public void actionPerformed(ActionEvent event) {
                  double valor = Double.parseDouble(labelValor.getText());  //explicação abaixo:
                  /** como "Text"  só pode ser do tipo String, é preciso converter para double,
                   * assim foi criada uma classe "Double" para ele.*/
                 
                   valor = valor + Double.parseDouble(meuCampoTexto.getText());
                   labelValor.setText("" + valor);  // explicação abaixo:
                   /** somando "valor atual" + "novo valor".
                    *  Por isso as " " (aspas vazias", para atribuir o valor já somado
                    *   ao último valor que digitamos e espera ser somado, clicando
                    *   no botão "somar".
                    */
                   
                   minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
                }
            }
           
            ActionListener listener = new CalcularListener();   
             /** criação  e associação do tratador de eventos ao botão*/
                  botaoSomar.addActionListener(listener);
             /** criação  e associação do tratador de eventos ao botão*/


        /******************* Fim da classe interna para soma *******************/
               

             /**************** Classe interna para subtração ********************/       
               class SubtrairListener implements ActionListener {
 
                public void actionPerformed(ActionEvent event) {
                    double valor = Double.parseDouble(labelValor.getText());
                    valor = valor - Double.parseDouble(meuCampoTexto.getText());
                    labelValor.setText("" + valor);
                    minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
                }
            }
                 
            ActionListener listener1 = new SubtrairListener();
            botaoSubtrair.addActionListener(listener1);

           /****************** Fim da classe interna para subtração ********************/
             

          /***************** Início da classe Multiplicar ***************************/
           class MultiplicarListener implements ActionListener {
               
            public void actionPerformed(ActionEvent event) {
               double valor = Double.parseDouble(labelValor.getText());
               valor = valor * Double.parseDouble(meuCampoTexto.getText());
               labelValor.setText("" + valor);
               minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
            }
        }
       
        ActionListener listener2 = new MultiplicarListener();
        botaoMultiplicar.addActionListener(listener2);

        /******************** Fim da classe para Multiplicar ***************************/
       
       

         /**************** Classe interna para Divisão ********************/           
               class DividirListener implements ActionListener {
 
                public void actionPerformed(ActionEvent event) {
                    double valor = Double.parseDouble(labelValor.getText());
                    valor = valor / Double.parseDouble(meuCampoTexto.getText());
                    labelValor.setText("" + valor);
                    minhaAreaTexto.append("Novo Valor: " + labelValor.getText() + "\n");
                }
            }
                 
                 ActionListener listener3 = new DividirListener();
                 botaoDividir.addActionListener(listener3);


              /**************** Fim da classe para dividir ************************/ 
         
             
                JPanel painel = new JPanel();  // criação do painel.
               
                /** adicionando componentes ao painel **/

                painel.add(labelDes1);
                painel.add(labelDes2);
                painel.add(labelDes2);
               
                painel.add(botaoSomar);
                painel.add(botaoSubtrair);
                painel.add(botaoMultiplicar);
                painel.add(botaoDividir);
               
                painel.add(meuCampoTexto);  // adiciona "meuCampoTexto" ao painel.
                painel.add(labelDescricao);

                painel.add(labelValor);
                painel.add(minhaAreaTexto);
               
                painel.add(labelDes3);
                painel.add(labelDes4);


                tela.setContentPane(painel);  // atribuição do painel à tela.
                tela.setSize(230, 350);  // definindo o tamanho da tela(janela).
                tela.setVisible(true);  // tornando a tela(janela) visível.
         
            }
        }
        //fim de Exemplo.java


Visualização:

(//http://i9.tinypic.com/6nqzvol.gif)





Botão múltipla escolha com confirmação


Neste exemplo eu vou mostrar como criar um componente
botão de múltipla escolha em java.

(//http://i14.tinypic.com/8bpbhjs.gif)


Obs.: Quando eu me referir a interface, considere como interface
gráfica. (Interface gráfica interage com o usuário).

Exemplo_checkbox.java
/** início exemplo CheckBox com botão de OK. **/


/** Realizando os imports das APIs **/
import java.awt.event.ActionEvent; // tratador de eventos
import java.awt.event.ActionListener; // importando a interface ActionListener
import javax.swing.JCheckBox; // botão de múltipla escolha
import javax.swing.JButton; // botão normal para o botão de "OK"
import javax.swing.JFrame; // frame (tela)
import javax.swing.JPanel; // painel

public class Exemplo_checkbox { // iniciando a classe
public static void main(String[] args) // declarando método main para iniciar o programa
{
JFrame tela = new JFrame("by: Triplo X"); /** cria a frame (tela) **/
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JCheckBox somaCheckBox = new JCheckBox ("Operações Básicas");
final JCheckBox subtraeCheckBox = new JCheckBox ("Operações Científicas");
final JCheckBox multiplicaCheckBox = new JCheckBox ("Operações Financeiras");

/** Obs.: Os componentes estão definidos como "final" para
* serem acessados pela classe interna **/



// Aqui está o botão de OK para validar o Checkbox...
final JButton botaoOK = new JButton("OK");

class CalcularListener implements ActionListener // classe interna implementando a interface
{
public void actionPerformed(ActionEvent event){
if (somaCheckBox.isSelected()) // se somaCheckBox for selecionado...
System.out.println("basico OK"); // ... imprime mensagem "básico OK" na tela
if (subtraeCheckBox.isSelected())
System.out.println("cientifico OK"); // imprime mensagem "cientifico OK" na tela
if (multiplicaCheckBox.isSelected())
System.out.println("financeiro OK"); // imprime mensagem "financeiro OK" na tela
}
}

ActionListener listener = new CalcularListener();
botaoOK.addActionListener(listener); // para acionar o listener só a partir do botao "OK"

JPanel painel = new JPanel(); // cria painel
painel.add(somaCheckBox); // adiciona botões ao painel
painel.add(subtraeCheckBox);
painel.add(multiplicaCheckBox);
painel.add(botaoOK);

tela.setContentPane(painel); // adiciona painel à tela (frame)
tela.setSize(300, 200); // define tamanho da tela (frame)
tela.setVisible(true); // define que a tela será visível
}
}
// fim

Visualização:

(//http://i24.servimg.com/u/f24/11/75/65/45/jcheck10.gif)


Explicação:

O componente JCheckBox() é um botão de múltipla escolha.
Graças a ele você pode selecionar várias opções ao mesmo tempo.
Ele permite adicionar também um botão de "OK" para confirmar nossas escolhas.

No caso acima, eu preferi mostrar uma mensagem na tela, quando fossem selecionadas as opções
e pressionado o botão de "OK".




Botão Escolha Única

Componente JRarioBox() - botão para escolha única

Nesta aula vou mostrar como criar um botão para escolha única em java.

(//http://i24.servimg.com/u/f24/11/75/65/45/image012.jpg)


Segue o código:

radio.java
/** @autor: Triplo X  **/

// importando classes
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;   // interface gráfica.
 import javax.swing.JFrame;    // classe para tela.
 import javax.swing.JLabel;   // classe para legenda.
 import javax.swing.JPanel;   // classe p/ painel.
 import javax.swing.JTextArea;   /** campo de texto (os resultados aparecerão
                               um abaixo do outro nesta área. **/

import javax.swing.JTextField;   // classe para campo de texto de uma linha.
import javax.swing.JRadioButton;  // botões de escolha única.
import javax.swing.ButtonGroup;
 /*************************************************************/
 public class radio {    // classe principal
     public static void main(String[] args) {
         JFrame tela = new JFrame("by: Triplo X");   // criando a janela.
         tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          // cria botões com ações de fechar a janela.

          JLabel labelDes1 = new JLabel("Digite o valor e");
          JLabel labelDes2 = new JLabel("selecione a opção:");
          JLabel labelDes3 = new JLabel("  Triplo X = DARK BOMBER  ");
          JLabel labelDes4 = new JLabel("www.forum-informatica.rg.com.br");
           
          final JTextArea minhaAreaTexto = new JTextArea(10, 20);   // criando área de texto.
          minhaAreaTexto.setEditable(false);   /** define que o conteúdo(o texto)
                                           não pode ser alterado
                                               */

          JLabel labelDescricao = new JLabel("Valor: ");   // cria rótulos.
          final JLabel labelValor = new JLabel("0");   // ("0" é o texto inicial).
           //precisam ser declarados como final p/ permitir o acesso da classe interna
         
                                                                             
          // precisam ser declarados como final p/ permitir o acesso da classe interna.                             
          final JTextField meuCampoTexto = new JTextField(8);  /** aqui é criado
          * um campo de texto de uma linha. Neste campo serão digitados os valores para se
          * realizer a soma.
          */
          meuCampoTexto.setText("0");  /* define texto inicial do campo acima;
            como o campo vai receber valores, tem que ficar com valor "0"*/

          JRadioButton botaoSomar = new JRadioButton("Somar");
          JRadioButton botaoSubtrair = new JRadioButton("Subtrair");
          JRadioButton botaoMultiplicar = new JRadioButton("Multiplicar"); 
          JRadioButton botaoDividir = new JRadioButton("Dividir");
             
          ButtonGroup grupo = new ButtonGroup();
          grupo.add(botaoSomar);
          grupo.add(botaoSubtrair);
          grupo.add(botaoMultiplicar);
          grupo.add(botaoDividir);
         
           
           /**************** início de uma classe interna para somar ******************/
          class CalcularListener implements ActionListener {  // explicação abaixo:
              /** início de uma classe interna
               * Ela está implementada dentro do Método main da classe Exemplo.
               *  Ela só pode ser vista apenas dentro da classe ou método que
               *  foi implementada, neste caso, a interfece "ActionListener".*/
             
              // "public void" é a implementação do método da interface".
              public void actionPerformed(ActionEvent event) {
                  double valor = Double.parseDouble(labelValor.getText());  //explicação abaixo:
                  /** como "Text"  só pode ser do tipo String, é preciso converter para double,
                   * assim foi criada uma classe "Double" para ele.*/
                 
                   valor = valor +  Double.parseDouble(meuCampoTexto.getText());
                   labelValor.setText(""  + valor);  // explicação abaixo:
                   /** somando "valor atual"   "novo valor".
                    *  Por isso as " " (aspas vazias", para atribuir o valor já somado
                    *   ao último valor que digitamos e espera ser somado, clicando
                    *   no botão "somar".
                    */
                   
                   minhaAreaTexto.append("Novo Valor: "  + labelValor.getText() +  "\n");
                }
            }
           
            ActionListener listener = new CalcularListener();   
             /** criação  e associação do tratador de eventos ao botão*/

                  botaoSomar.addActionListener(listener);           
        /******************* Fim da classe interna para soma *******************/
               

             /**************** Classe interna para subtração ********************/       
               class SubtrairListener implements ActionListener {
 
                public void actionPerformed(ActionEvent event) {
                    double valor = Double.parseDouble(labelValor.getText());
                    valor = valor - Double.parseDouble(meuCampoTexto.getText());
                    labelValor.setText("" +  valor);
                    minhaAreaTexto.append("Novo Valor: " +  labelValor.getText() +  "\n");
                }
            }
                 
            ActionListener listener1 = new SubtrairListener();
            botaoSubtrair.addActionListener(listener1);

           /****************** Fim da classe interna para subtração ********************/
             

          /***************** Início da classe Multiplicar ***************************/
           class MultiplicarListener implements ActionListener {
               
            public void actionPerformed(ActionEvent event) {
               double valor = Double.parseDouble(labelValor.getText());
               valor = valor * Double.parseDouble(meuCampoTexto.getText());
               labelValor.setText("" +  valor);
               minhaAreaTexto.append("Novo Valor: "  + labelValor.getText() +  "\n");
            }
        }
       
        ActionListener listener2 = new MultiplicarListener();
        botaoMultiplicar.addActionListener(listener2);

        /******************** Fim da classe para Multiplicar ***************************/
       
       

         /**************** Classe interna para Divisão ********************/           
               class DividirListener implements ActionListener {
 
                public void actionPerformed(ActionEvent event) {
                    double valor = Double.parseDouble(labelValor.getText());
                    valor = valor / Double.parseDouble(meuCampoTexto.getText());
                    labelValor.setText("" +  valor);
                    minhaAreaTexto.append("Novo Valor: "  + labelValor.getText()  + "\n");
                }
            }
                 
                 ActionListener listener3 = new DividirListener();

                 botaoDividir.addActionListener(listener3);

              /**************** Fim da classe para dividir ************************/ 
         
             
                JPanel painel = new JPanel();  // criação do painel.
               
                /** adicionando componentes ao painel **/

                painel.add(labelDes1);
                painel.add(labelDes2);
                painel.add(botaoSomar);
                painel.add(botaoSubtrair);
                painel.add(botaoMultiplicar);
                painel.add(botaoDividir);

                painel.add(meuCampoTexto);  // adiciona "meuCampoTexto" ao painel.
                painel.add(labelDescricao);

                painel.add(labelValor);
                painel.add(minhaAreaTexto);
               
                painel.add(labelDes3);
                painel.add(labelDes4);


                tela.setContentPane(painel);  // atribuição do painel à tela.
                tela.setSize(230, 350);  // definindo o tamanho da tela(janela).
                tela.setVisible(true);  // tornando a tela(janela) visível.
         
            }
        }
        //fim de Exemplo.java


Visualização:


(//http://i12.tinypic.com/8fetnx0.gif)





Criar um botão em forma de menu



Componente JComboBox() - botão em forma de menu.


Nesta aula vou mostrar como criar um botão em forma de menu em java.

(//http://i1.tinypic.com/81g6s7p.jpg)


Este não é um botão comum, a sua implementação correta não é muito fácil de se entender.

Mas vamos deixar a conversa fiada para depois. ;)

Bye!
Title: Re: Aulas java - criando botões da maneira correta
Post by: Be.Cool on 15 de December , 2007, 10:40:25 AM
Parabéns Dark Bomber, a cada dia que passa evoluindo mais e mais.
sinto muito por nao ter te ajudado nesses ultimos tempos, to meio sem tempo  ;)
parabens novamente, otimo post ²
Agita ai a area de java  :D

fuiz.
Title: Re: Aulas java - criando botões da maneira correta
Post by: Alucard on 15 de December , 2007, 10:51:00 AM
É realmente muito bom! Parabens de verdade... os códigos comentádos vai ajudar muito o pessoal que tá começando... como disse o Be.Cool agita ai, a área de java.
Qualquer coisa tamo ai.

VAleuw
Title: Re: Aulas java - criando botões da maneira correta
Post by: Anonymous on 15 de December , 2007, 11:40:26 AM
Não é pra vocês se gabarem não, mas devo isso à vocês dois! ;)