• Nenhum resultado encontrado

USJT-2016-CCO&SI-PPINT-Aula06-Menus em Java

N/A
N/A
Protected

Academic year: 2021

Share "USJT-2016-CCO&SI-PPINT-Aula06-Menus em Java"

Copied!
8
0
0

Texto

(1)

USJT – 2016 – CCO & SI – PPINT – Práticas de Programação Integrada

Professores:

Calvetti, Élcio, Fúlvio, Hamilton, Liliane e Rodrigo

Aula:

06

Assunto:

Menus em Java.

Conceitos Básicos abordados pelo Professor:

- JMenu;

- JMenuItem; e

- JMenuBar.

Resumo:

Os códigos a seguir devem ser digitados na sequência, em um mesmo trecho de programa:

JMenu

Usado para se criar um menu. Ex.:

// Cria o menu “Arquivo”

JMenu x = new JMenu(“Arquivo”);

// Ajusta o mnemônico para ‘A’

x.setMnemonic(‘A’);

// O menu é acionado Alt+A

// Coloca uma linha de separação no menu

x.addSeparador();

// Adiciona elementos de sub-menus ou itens

x.add();

JMenuItem

Usado para se criar itens de menu. Ex:

// Cria o item “cor” no menu

JMenuItem y = new JMenuItem(“cor”);

// Ajusta o mnemônico para ‘c’

y.setMnemonic(‘c’);

JMenuBar

Usado para criar barras de menu. Ex.:

// Cria uma barra para menu

JMenuBar barra = new JMenuBar();

// Coloca a barra no Frame

setJMenuBar(barra);

// Adiciona o menu ‘x’ à barra

Barra.add(x);

Para saber se um elemento do menu foi escolhido, use ActionListener para elementos comuns ou

ItemListener para check-box e radio buttons.

(2)

JRadioButtonMenuItem

Usado para se criar botões radio “optionbox”. Ex.:

// Cria botões de opção

JRadioButton radio1 = new JRadioButton(“Plain”, true);

JRadioButton radio2 = new JRadioRubtton(“Bold”, false);

JCheckBoxMenuItem

Usado para se criar caixas de checagem “checkbox”. Ex.: Vide

// Cria caixas de seleção

JCheckBox caixa1 = new JCheckBox(“Itálico”);

ButtonGroup

Usado para se agrupar botões, tornando-os mutuamente exclusivos.

Ex.:

// Cria um grupo ‘b’ de botões mutuamente exclusivos

ButtonGroup b = new ButtonGroup();

// Adiciona o botão ‘radio1’ ao grupo

b.add(radio1);

// Adiciona o botão ‘radio2’ ao grupo

b.add(radio2);

Exemplos:

Livro Texto: “Java – Como Programar” – 6ª Edição, Autores: Deitel & Deitel; Exercícios das Figs.:

- 11.17 (pg. 392) e 11.18 (pg. 393); - 11.19 (pg. 394) e 11.20 (pg. 396); e - 22.5 (pg. 755) e 22.6 (pg. 758).

Atividades Práticas:

1. Reescreva o programa das figuras 22.5 e 22.6 adaptando a interface com o usuário do idioma Inglês

para o idioma Português.

2. Crie uma aplicação para atender a uma loja de roupas, capaz de configurar, via menu, um pedido, em

texto, na tela, contendo:

a- Tipo: Camisa, camiseta, calça, vestido, saia etc.;

b- Gênero: Masculino, Feminino e Unisex;

c- Tamanho: PP, P, M, G, GG, XG;

d- Cor: Vermelha, Preta, Amarela etc.;

e- Pagamento: Cheque, Dinheiro, Cartão de Crédito ou Cartão de Débito.

Exemplo de pedido:

Camiseta masculina, Tamanho PP, Preta e pagamento em Cheque.

(3)

// Fig. 11.17: CheckBoxFrame.java // Creating JCheckBox buttons. import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JCheckBox;

public class CheckBoxFrame extends JFrame {

private JTextField textField; // exibe o texto na alteração de fontes private JCheckBox boldJCheckBox; // para selecionar/desselecionar negrito private JCheckBox italicJCheckBox; // para selecionar/desselecionar itálico

// construtor CheckBoxFrame adiciona JCheckBoxes ao JFrame public CheckBoxFrame()

{

super( "JCheckBox Test" );

setLayout( new FlowLayout() ); // configura o layout de frame

// configura JTextField e sua fonte

textField = new JTextField( "Watch the font style change", 20 ); textField.setFont( new Font( "Serif", Font.PLAIN, 14 ) );

add( textField ); // adiciona textField ao JFrame

boldJCheckBox = new JCheckBox( "Bold" ); // cria caixa de seleção p/ negrito italicJCheckBox = new JCheckBox( "Italic" ); // cria itálico

add( boldJCheckBox ); // adiciona caixa de seleção de negrito ao JFrame add( italicJCheckBox ); // adiciona caixa de seleção de itálico ao JFrame // listeners registradores para JCheckBoxes

CheckBoxHandler handler = new CheckBoxHandler(); boldJCheckBox.addItemListener( handler ); italicJCheckBox.addItemListener( handler ); } // fim do construtor CheckBoxFrame

// classe interna private para tratamento de evento ItemListener private class CheckBoxHandler implements ItemListener

{

private int valBold = Font.PLAIN; // controla o estilo de fonte negrito private int valItalic = Font.PLAIN; // controla o estilo de fonte itálico

// responde aos eventos de caixa de seleção public void itemStateChanged( ItemEvent event ) {

// processa eventos da caixa de seleção de negrito if (event.getSource() == boldJCheckBox)

valBold =

boldJCheckBox.isSelected()? Font.BOLD : Font.PLAIN;

// processa eventos da caixa de seleção de itálico if (event.getSource() == italicJCheckBox)

valItalic =

italicJCheckBox.isSelected()? Font.ITALIC : Font.PLAIN; // configura a fonte do campo de texto

textField.setFont(

new Font( "Serif", valBold + valItalic, 14 ) ); } // fim do método itemStateChanged

} // fim da classe CheckBoxHandler interna private } // fim da classe CheckBoxFrame

(4)

// Fig. 11.18: CheckBoxTest.java // Testando CheckBoxFrame. import javax.swing.JFrame;

public class CheckBoxTest {

public static void main( String args[] ) {

CheckBoxFrame checkBoxFrame = new CheckBoxFrame();

checkBoxFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); checkBoxFrame.setSize( 275, 100 ); // configura o tamanho do frame checkBoxFrame.setVisible( true ); // exibe o frame

} // fim de main

} // fim da classe CheckBoxTest

//--- // Fig. 11.19: RadioButtonFrame.java

// Criando botões de opção utilizando ButtonGroup e JRadioButton. import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JRadioButton; import javax.swing.ButtonGroup;

public class RadioButtonFrame extends JFrame {

private JTextField textField; // utilizado para exibir alterações de fonte private Font plainFont; // fonte para texto simples

private Font boldFont; // fonte para texto em negrito private Font italicFont; // fonte para texto em itálico

private Font boldItalicFont; // fonte para texto em negrito e itálico private JRadioButton plainJRadioButton; // seleciona texto simples private JRadioButton boldJRadioButton; // seleciona texto em negrito private JRadioButton italicJRadioButton; // seleciona texto em itálico private JRadioButton boldItalicJRadioButton; // negrito e itálico

private ButtonGroup radioGroup; // buttongroup para armazenar botões de opção

// construtor RadioButtonFrame adiciona JRadioButtons ao JFrame public RadioButtonFrame()

{

super( "RadioButton Test" );

setLayout( new FlowLayout() ); // configura o layout de frame

textField = new JTextField( "Watch the font style change", 25 ); add( textField ); // adiciona textField ao JFrame

// cria botões de opção

plainJRadioButton = new JRadioButton( "Plain", true ); boldJRadioButton = new JRadioButton( "Bold", false ); italicJRadioButton = new JRadioButton( "Italic", false ); boldItalicJRadioButton = new JRadioButton( "Bold/Italic", false ); add( plainJRadioButton ); // adiciona botão no estilo simples ao JFrame add( boldJRadioButton ); // adiciona botão de negrito ao JFrame

add( italicJRadioButton ); // adiciona botão de itálico ao JFrame add( boldItalicJRadioButton ); // adiciona botão de negrito e itálico // cria relacionamento lógico entre JRadioButtons

radioGroup = new ButtonGroup(); // cria ButtonGroup

radioGroup.add( plainJRadioButton ); // adiciona simples ao grupo radioGroup.add( boldJRadioButton ); // adiciona negrito ao grupo radioGroup.add( italicJRadioButton ); // adiciona itálico ao grupo radioGroup.add( boldItalicJRadioButton ); // adiciona negrito e itálico // cria fonte objetos

plainFont = new Font( "Serif", Font.PLAIN, 14 ); boldFont = new Font( "Serif", Font.BOLD, 14 ); italicFont = new Font( "Serif", Font.ITALIC, 14 );

boldItalicFont = new Font( "Serif", Font.BOLD + Font.ITALIC, 14 ); textField.setFont( plainFont ); // configura a fonte inicial como simples

(5)

// registra eventos para JRadioButtons

plainJRadioButton.addItemListener( new RadioButtonHandler( plainFont ) ); boldJRadioButton.addItemListener( new RadioButtonHandler( boldFont ) ); italicJRadioButton.addItemListener( new RadioButtonHandler( italicFont ) ); boldItalicJRadioButton.addItemListener( new RadioButtonHandler( boldItalicFont ) ); } // fim do construtor RadioButtonFrame

// classe interna private para tratar eventos de botão de opção private class RadioButtonHandler implements ItemListener {

private Font font; // fonte associada com esse listener

public RadioButtonHandler( Font f ) {

font = f; // configura a fonte desse listener } // fim do construtor RadioButtonHandler

// trata eventos de botão de opção

public void itemStateChanged( ItemEvent event ) {

textField.setFont( font ); // configura fonte de textField } // fim do método itemStateChanged

} // fim da classe RadioButtonHandler interna private } // fim da classe RadioButtonFrame

//--- // Fig. 11.20: RadioButtonTest.java

// Testando RadioButtonFrame. import javax.swing.JFrame;

public class RadioButtonTest {

public static void main( String args[] ) {

RadioButtonFrame radioButtonFrame = new RadioButtonFrame();

radioButtonFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); radioButtonFrame.setSize( 300, 100 ); // configura o tamanho do frame radioButtonFrame.setVisible( true ); // exibe o frame

} // fim de main

} // fim da classe RadioButtonTest

//--- // Fig. 22.5: MenuFrame.java // Demonstrando menus. import java.awt.Color; import java.awt.Font; import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; import javax.swing.JFrame; import javax.swing.JRadioButtonMenuItem; import javax.swing.JCheckBoxMenuItem; import javax.swing.JOptionPane; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.ButtonGroup; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JMenuBar;

public class MenuFrame extends JFrame {

private final Color colorValues[]= {Color.BLACK, Color.BLUE, Color.RED, Color.GREEN}; private JRadioButtonMenuItem colorItems[]; // itens do menu Color

private JRadioButtonMenuItem fonts[]; // itens do menu Font private JCheckBoxMenuItem styleItems[]; // itens do menu Font Style private JLabel displayJLabel; // exibe texto de exemplo

(6)

private ButtonGroup colorButtonGroup; // gerencia itens do menu Color private int style; // utilizado para criar estilos de fontes

// construtor sem argumento para configurar a GUI public MenuFrame()

{

super( "Using JMenus" );

JMenu fileMenu = new JMenu( "File" ); // cria o menu File

fileMenu.setMnemonic( 'F' ); // configura o mnemônico como F // cria item de menu About...

JMenuItem aboutItem = new JMenuItem( "About..." );

aboutItem.setMnemonic( 'A' ); // configura o mnemônico com A fileMenu.add( aboutItem ); // adiciona o item about ao menu File aboutItem.addActionListener(

new ActionListener() // classe interna anônima {

// exibe um diálogo de mensagem quando o usuário seleciona About... public void actionPerformed( ActionEvent event )

{

JOptionPane.showMessageDialog( MenuFrame.this, "This is an example\nof using menus", "About", JOptionPane.PLAIN_MESSAGE ); } // fim do método actionPerformed

} // fim da classe interna anônima ); // fim da chamada para addActionListener

JMenuItem exitItem = new JMenuItem( "Exit" ); // cria o item exit

exitItem.setMnemonic( 'x' ); // configura o mnemônico como x fileMenu.add( exitItem ); // adiciona o item exit ao menu File exitItem.addActionListener(

new ActionListener() // classe interna anônima {

// termina o aplicativo quando o usuário clica exitItem public void actionPerformed( ActionEvent event ) {

System.exit( 0 ); // encerra o aplicativo } // fim do método actionPerformed

} // fim da classe interna anônima ); // fim da chamada para addActionListener

JMenuBar bar = new JMenuBar(); // cria a barra de menus

setJMenuBar( bar ); // adiciona uma barra de menus ao aplicativo bar.add( fileMenu ); // adiciona o menu File à barra de menus JMenu formatMenu = new JMenu( "Format" ); // cria o menu Format

formatMenu.setMnemonic( 'r' ); // configura o mnemônico como r // array listando cores de string

String colors[] = { "Black", "Blue", "Red", "Green" }; JMenu colorMenu = new JMenu( "Color" ); // cria o menu Color

colorMenu.setMnemonic( 'C' ); // configura o mnemônico como C // cria itens do menu Color com botões de opção

colorItems = new JRadioButtonMenuItem[ colors.length ]; colorButtonGroup = new ButtonGroup(); // gerencia cores

ItemHandler itemHandler = new ItemHandler(); // handler para cores

// cria itens do menu Color com botões de opção for ( int count = 0; count < colors.length; count++ ) {

colorItems[ count ] = new JRadioButtonMenuItem( colors[ count ] ); // cria o item

colorMenu.add( colorItems[ count ] ); // adiciona o item ao menu Color colorButtonGroup.add( colorItems[ count ] ); // adiciona ao grupo colorItems[ count ].addActionListener( itemHandler );

} // fim do for

colorItems[ 0 ].setSelected( true ); // seleciona o primeiro item Color

formatMenu.add( colorMenu ); // adiciona o menu Color ao menu Format formatMenu.addSeparator(); // adiciona um separador no menu

(7)

// array listando nomes de fonte

String fontNames[] = { "Serif", "Monospaced", "SansSerif" }; JMenu fontMenu = new JMenu( "Font" ); // cria a fonte do menu

fontMenu.setMnemonic( 'n' ); // configura o mnemônico como n // cria itens do menu radiobutton para nomes de fonte

fonts = new JRadioButtonMenuItem[ fontNames.length ];

fontButtonGroup = new ButtonGroup(); // gerencia os nomes das fontes

// criar itens do menu Font com botões de opção for ( int count = 0; count < fonts.length; count++ ) {

fonts[ count ] = new JRadioButtonMenuItem( fontNames[ count ] );

fontMenu.add( fonts[ count ] ); // adiciona fonte ao menu Font fontButtonGroup.add( fonts[ count ] ); // adiciona ao grupo de botões fonts[ count ].addActionListener( itemHandler ); // adiciona handler } // fim do for

fonts[ 0 ].setSelected( true ); // seleciona o primeiro item do menu Font fontMenu.addSeparator(); // adiciona uma barra separadora ao menu Font String styleNames[] = { "Bold", "Italic" }; // nomes dos estilos

styleItems = new JCheckBoxMenuItem[ styleNames.length ];

StyleHandler styleHandler = new StyleHandler(); // handler de estilo

// criar itens do menu Style com caixas de seleção

for ( int count = 0; count < styleNames.length; count++ ) {

styleItems[ count ] = new JCheckBoxMenuItem( styleNames[ count ] ); // para estilo fontMenu.add( styleItems[ count ] ); // adiciona ao menu Font styleItems[ count ].addItemListener( styleHandler ); // handler } // fim do for

formatMenu.add( fontMenu ); // adiciona o menu Font ao menu Format bar.add( formatMenu ); // adiciona o menu Format à barra de menus

// configura o rótulo para exibir texto

displayJLabel = new JLabel( "Sample Text", SwingConstants.CENTER ); displayJLabel.setForeground( colorValues[ 0 ] );

displayJLabel.setFont( new Font( "Serif", Font.PLAIN, 72 ) );

getContentPane().setBackground( Color.CYAN ); // configura o fundo add( displayJLabel, BorderLayout.CENTER ); // adiciona displayJLabel } // fim do construtor de MenuFrame

// classe interna para tratar eventos de ação dos itens de menu private class ItemHandler implements ActionListener

{

// processa seleções de cor e fonte

public void actionPerformed( ActionEvent event ) {

// processa a seleção de cor

for ( int count = 0; count < colorItems.length; count++ ) {

if ( colorItems[ count ].isSelected() ) {

displayJLabel.setForeground( colorValues[ count ] ); break;

} // fim do if } // fim do for

// processa a seleção de fonte

for ( int count = 0; count < fonts.length; count++ ) {

if ( event.getSource() == fonts[ count ] ) {

displayJLabel.setFont(

new Font( fonts[ count ].getText(), style, 72 ) ); } // fim do if

} // fim do for

repaint(); // redesenha o aplicativo } // fim do método actionPerformed } // fim da classe ItemHandler

(8)

// classe interna para tratar eventos dos itens de menu com caixa de seleção private class StyleHandler implements ItemListener

{

// processa seleções de estilo da fonte public void itemStateChanged( ItemEvent e ) {

style = 0; // inicializa o estilo // verifica se negrito foi selecionado if ( styleItems[ 0 ].isSelected() )

style += Font.BOLD; // adiciona negrito ao estilo // verifica se itálico foi selecionado

if ( styleItems[ 1 ].isSelected() )

style += Font.ITALIC; // adiciona itálico ao estilo displayJLabel.setFont(

new Font( displayJLabel.getFont().getName(), style, 72 ) ); repaint(); // redesenha o aplicativo

} // fim do método itemStateChanged } // fim da classe StyleHandler } // fim da classe MenuFrame

//--- // Fig. 22.6: MenuTest.java

// Testando MenuFrame. import javax.swing.JFrame;

public class MenuTest {

public static void main( String args[] ) {

MenuFrame menuFrame = new MenuFrame(); // criar MenuFrame menuFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); menuFrame.setSize( 500, 200 ); // configura o tamanho do frame menuFrame.setVisible( true ); // exibe o frame

} // fim de main

} // fim da classe MenuTest

//---

/************************************************************************** * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and * * Pearson Education, Inc. All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * *************************************************************************/

Referências

Documentos relacionados

Recorrendo a situações e contextos variados, incluindo a utilização de materiais diversificados e tecnologia, os alunos devem resolver tarefas que requeiram a resolução de

Esta foliação ocorre ao longo de faixas miloníticas, com espessura desde submilimétrica (Fig. 23) até métrica, nas quais é caracterizada pela orientação de ribbons

No prazo de até trinta e seis meses, a contar da data da publicação deste Decreto, os serviços de transporte coletivo aéreo e os equipamentos de acesso às

A fim de evitar ou, quando tal não for praticável, reduzir as emissões para o solo e para a água provenientes do armazenamento de estrume sólido, a MTD consiste em utilizar

CONCLUSÕES: Há correlação positiva entre o IP neonatal e concentração de leptina materna em gestantes diabéticas usuárias de insulina; há correlação positiva entre

Quando o diálogo Expert Level Parameter aparecer, selecione Variable Selection, , então a seguinte caixa de diálogo aparecerá:... Este diálogo também pode ser acessado através

Nº: 11 NOME: MAYARA BERTOLLO 49 MINUTOS DAR UM TRANCO E DERRUBAR SUA ADVERSARIA EM JOGADA. Nº: 5 NOME: SARA GUIMARAES 67 MINUTOS ACERTAR UM PONTAPÉ E DERRUBAR SUA ADVERSARIA

A importância deste trabalho dá-se pelo fato das disciplinas buscarem, conjuntamente, “estimular, nos alunos, o senso de preservação da memória social coletiva,