Você está na página 1de 14

Luiz Gustavo S.

de Souza
12, outubro 2010

E S T A T S T I C A S
89,860 Hits

Swing e Pivot
Filed under: Code Tip Tags:Pivot, Swing luizgustavoss @ 11:53 am

P G I N A S
Links teis Sobre Mim

D O

B L

Este post um a rpida nota sobre um a com binao que eu acredito que ser m uito til para a criao de aplicaes desktop. Trata-se da com binao de Swing com o Pivot. Isto ser possvel a partir da verso 2.0. A im agem abaixo m ostra um exem plo, e em seguida coloco o link do exem plo, e de onde possvel obter os fontes:

E - M A I L
I P B N N E N A L O O M F R O T V A O A G I O I

P A R A
R M A E F I S L E S E S S I N R E C C A A R T I

U A E B E G

J O I N 3 O T H E R F O L L O W E R S

Inscreva-me!

T A G S
A P A C H A P S E R V E R E P L I C A T S E R AV SA FSR T A H E C O M D A T A S D EU S RK C E P O T O E C L E M M A E J B 3 G L A S S IF SRI E P O R T I I S H

EC L I P S E

J A VJ A V A A
J B OJ S S S S B O
Link do exem plo: http://ixnay.biz/pivot-dem os/swing-dem o.htm l

S C R I

T O O L J I N T E R JN O G O S A M A L F R J S F J U N II T L UO X 4 J L N G L O G I N M E TDM UY L C E Q L M O R I S S M S C A R TA R SI C A S M

N E T BP EHP P I V O T A N S P L U P O P O S T G R E S G I N S O L R I SAQ L S E SR V E R 2 N

URL para obter o fonte: http://svn.apache.org/repos/asf/pivot/trunk/dem os/src/org/apache/pivot/dem os/swing/ Com entrios (1)

S W I T EG N S

T E S U N I T O MUC BA U N T B A P P S T W E U W E B W EE R BV SE PR H E R S W I N D XO M L S W 7

A R Q U I V O S
16, maro 2010

Dicas para Java Swing


Filed under: Dica Rpida Tags:Desk top, Java, Swing luizgustavoss @ 12:19 am

Esta um a dica rpida para quem est com eando a aprender Java Swing! O conjunto de com ponentes presente neste fram ework da API Java robusto e avanado, e perm ite a criao de interfaces grficas para o usurio com um a alta qualidade. Nas ltim as verses da JDK o desem penho do Swing vem m elhorando m uito, e ainda com um que em presas recorram a esta tecnologia para a criao de aplicaes desktop, ainda que as aplicaes web estejam em alta. A grande flexibilidade e da tecnologia Swing, porm , m uitas vezes um a barreira para quem est com eando a aprender a tecnologia Java. Seus com ponentes baseados no padro MVC perm item a criao de datasources especficos para os com poentes, assim com o renderizadores especializados, e aprender a trabalhar com tudo isso pode dar um bom trabalho. O que m uitos desconhecem , porm , que a prpria JDK vem com exem plos bem interessantes de com o criar interfaces baseadas em Swing. A dica de hoje o aplicativo SwingSet, presente no diretrio de exem plos da JDK. Voc pode encontrar o aplicativo no seguinte

Janeiro 2012 Janeiro 2011 Dezembro 2010 Novembro 2010 Outubro 2010 Setembro 2010 Junho 2010 Maio 2010 Maro 2010 Fevereiro 2010 Janeiro 2010 Dezembro 2009 Agosto 2009 Maio 2009 Abril 2009 Maro 2009 Fevereiro 2009 Janeiro 2009 Novembro 2008 Agosto 2008
converted by Web2PDFConvert.com

diretrio (onde JAVA_HOME o diretrio de instalo da JDK): JAVA_HOME\dem o\jfc\SwingSet2 Ao executar o arquivo SwingSet2. jar ser iniciada a aplicao:

Agosto 2008 Junho 2008 Abril 2008

M E T A
Registrar-Se Login Posts RSS RSS Dos Comentrios WordPress.Com

Pesquisar

T P I C O S

R E C E N

Os Nmeros De 2011 WeaverFX Um Concorrente Para O Apache Pivot? Jogo Da Memria Com Apache Pivot Mensagens Dinmicas Com MessageFormat Dica: Prototipao Com Balsamiq

C A T E G O R I A S
Ela apresenta exem plos dos principais com ponentes da API Swing, com o os com plexos JTable e JTree:
Artigo Code Tip Dica Rpida How-To Tutorial Uncategorized

converted by Web2PDFConvert.com

E o m elhor de tudo, o cdigo fonte est disponvel para a consulta:

Deixo ainda a dica do Swing Tutorial (em ingls) para a consulta. excelente! http://java.sun.com /docs/books/tutorial/uiswing/ Est dada a dica. Qualquer hora posto algo especfico da tecnologia Swing por aqui. []s Com entrios (2)

15, janeiro 2009

Jogo da Memria em Java


Filed under: Tutorial Tags:Java, jogos, Swing luizgustavoss @ 1:03 am

Neste post irei publicar os fontes de um jogo que fiz h um tem po atrs, quando ainda estava na faculdade.

converted by Web2PDFConvert.com

Este jogo foi um pequeno desafio pessoal que m e propus quando com ecei a aprender Java e que depois acabou virando um trabalho de sala. Na faculdade havam os feito um jogo da m em ria em C, para console.Nesta poca eu estava com eando a aprender Java, e estava encantado com a possibilidade de criar interfaces grficas sem a necessidade de um a IDE. Por esta razo, nenhum a IDE ser necessria para criar este jogo. Na ocasio eu utilizei o JCreator com o editor de cdigo, m as voc poder digitar as classes no bloco de notas e com pilar no console se preferir, funciona tam bm Basicam ente um jogo que utiliza pacotes do core de Java, e no necessria a utilizao de nenhum a biblioteca adicional s j encontradas na JRE para seu funcionam ento. So quatro classes e algum as im agens, que voc dever dispor da seguinte form a: - Jogador.java - MyButton.java - TelaUm .java - TelaJogo.java - im agens (diretrio) - - duke (diretrio) - - tux (diretrio) - - jogo (diretrio) As im agens usadas, m ais especificam ente dos diretrios tux e duke, foram encontradas na internet. As dem ais, do diretrio jogo, foram encontradas tam bm na internet, e algum as so m ontagens que fiz. Cada diretrio de im agem , com exceo do diretrio jogo, representam os possveis jogos presentes para se escolher. Quando eu fiz esse jogo pela prim eira vez, ele tinha 20 diretrios, ou seja, era possvel escolher vrios desenhos diferentes para os jogos. Bom , depois de tanto falar, vam os aos fontes. Um a vez criados os arquivos .java citados acim a, copie os contedos das classes abaixo para seus devidos arquivos: Jogador.java
01 public class Jogador{ 02 03 private String nome; 04 private int pontos; 05 06 public Jogador(String nomeJogador){ 07 08 nome = (nomeJogador.equals("")? "Jogador sem nome...coitado! ": nomeJogador ); 09 pontos = 0; 10 } 11 12 public String obterNome(){ 13 14 return nome; 15 } 16 17 public int obterPontos(){ 18 19 return pontos; 20 } 21 22 public void incrementarPontos(){ 23 24 pontos += 5; 25 } 26 27 public void decrementarPontos(){ 28 29 pontos--; 30 } 31 32 } // fim da classe pessoa

MyButton.java
01 import javax.swing.*; 02 03 public class MyButton extends JButton{ 04 05 private Icon imagemPadrao; 06 private Icon imagemBotao; 07 08 public MyButton(Icon imagemPadrao, Icon imagemBotao){ 09 10 super(); 11 12 this.imagemBotao = imagemBotao; 13 this.imagemPadrao = imagemPadrao; 14 15 setImagemPadrao(); 16 } 17
converted by Web2PDFConvert.com

18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 }

public void setImagemPadrao(){ this.setIcon(imagemPadrao); } public void setImagemBotao(){ this.setIcon(imagemBotao); } public Icon getImagemBotao(){ return this.imagemBotao; }

TelaUm .java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TelaUm extends JFrame implements ActionListener, ItemListener{ private private private private private private private private private private private private private private private private private private private private private private Container container; JButton botaoSair, botaoIniciarJogo; JPanel painelBotoes, painelDados, painelCabecalho; JPanel painelCentro, painelRodape, painelImagem; Icon imagemPainel, imagemRodape, imagemJogar, titulo; Icon imagemJogarRoll, imagemSair, imagemSairRoll; JLabel labelImagemPainel, nomeJogador, temaJogada; JLabel texto1, desenvolvimento, autor; GridLayout gridBotoes, gridDados, gridCabecalho, gridRodape; JComboBox temasJogada; int indiceTema = 1; Jogador objJogador; TelaJogo objTelaJogo; JTextField fieldNomeJogador; Font fonte18, fonte10; JTextArea telaSaida = new JTextArea(); boolean jogoFacil = false; ButtonGroup dificuldadeGroup; JMenu menuDificuldade; JMenuBar barraMenu; JRadioButtonMenuItem facil, dificil; JLabel nivelDificuldade;

String nomeObjJogador; // os temas para os jogos private String nomesTemas[] = { "Duke", "Tux"}; // ndices dos temas para os jogos private int indiceTemas[] = { 1, 2 }; public TelaUm(){ super( "Bem-vindo ao Jogo da Memria!" ); // adiciona um listener janela addWindowListener( // classe interna annima new WindowAdapter(){ // trata o evento de quando o usurio fecha a janela public void windowClosing( WindowEvent windowEvent ){ saidaPrograma(); } }// fim da classe interna annima ); nivelDificuldade = new JLabel("Nvel de dificuldade: DIFCIL"); nivelDificuldade.setForeground(Color.red); // gerenciadores de layout gridBotoes = new GridLayout( 1, 2, 5, 5 ); gridDados = new GridLayout( 6, 1, 10, 10 ); gridCabecalho = new GridLayout( 1, 1, 10, 10 ); gridRodape = new GridLayout( 1, 1, 10, 10 ); // painel da imagem (esquerda) imagemPainel = new ImageIcon(getClass().getResource("/imagens/jogo/painel.gif")); labelImagemPainel = new JLabel( imagemPainel ); painelImagem = new JPanel(); painelImagem.add( labelImagemPainel ); painelImagem.setBackground( Color.white ); fonte10 = new Font( "Verdana", Font.ITALIC, 10 ); // imagens dos botes imagemJogar = new ImageIcon(getClass().getResource("/imagens/jogo/jogar.gif"));

converted by Web2PDFConvert.com

079

imagemJogarRoll = new ImageIcon(getClass().getResource("/imagens/jogo/jogarRoll.gif")); // imagem Rollover 080 imagemSair = new ImageIcon(getClass().getResource("/imagens/jogo/sair.gif")); 081 imagemSairRoll = new ImageIcon(getClass().getResource("/imagens/jogo/sairRoll.gif")); // imagem Rollover 082 083 // boto Iniciar Jogo 084 botaoIniciarJogo = new JButton( "Iniciar Jogo", imagemJogar ); 085 botaoIniciarJogo.setRolloverIcon( imagemJogarRoll ); 086 botaoIniciarJogo.addActionListener( this ); 087 botaoIniciarJogo.setSize( 250, 15 ); 088 botaoIniciarJogo.setHorizontalAlignment( SwingConstants.LEFT ); 089 090 // boto Sair 091 botaoSair = new JButton( "Abandonar o Jogo", imagemSair ); 092 botaoSair.setRolloverIcon( imagemSairRoll ); 093 botaoSair.addActionListener( this ); 094 botaoSair.setSize( 250, 15 ); 095 botaoSair.setHorizontalAlignment( SwingConstants.RIGHT ); 096 botaoSair.setHorizontalTextPosition( SwingConstants.LEFT ); 097 098 // painel de botes (inferior) 099 painelBotoes = new JPanel(); 100 painelBotoes.setBackground( Color.lightGray ); 101 painelBotoes.setLayout( gridBotoes ); 102 painelBotoes.add( botaoSair ); 103 painelBotoes.add( botaoIniciarJogo ); 104 105 //cabealho 106 titulo = new ImageIcon(getClass().getResource("/imagens/jogo/titulo.gif")); 107 texto1 = new JLabel( titulo ); 108 texto1.setHorizontalAlignment( SwingConstants.CENTER ); 109 110 // painel de cabealho 111 painelCabecalho = new JPanel(); 112 painelCabecalho.setLayout( gridCabecalho ); 113 painelCabecalho.setBackground( Color.lightGray ); 114 painelCabecalho.add( texto1 ); 115 116 // label do nome do jogador 117 nomeJogador = new JLabel("Informe seu nome:"); 118 nomeJogador.setHorizontalAlignment( SwingConstants.LEFT ); 119 120 // campo do nome do jogador 121 fieldNomeJogador = new JTextField( 15 ); 122 fieldNomeJogador.setHorizontalAlignment( SwingConstants.LEFT ); 123 124 // label do tema da jogada 125 temaJogada = new JLabel( "Escolha o tema:" ); 126 temaJogada.setHorizontalAlignment( SwingConstants.LEFT ); 127 128 // ComboBox do tema da jogada 129 temasJogada = new JComboBox( nomesTemas ); 130 temasJogada.addItemListener( this ); 131 temasJogada.setMaximumRowCount( 4 ); 132 133 // configurao do painel central 134 painelCentro = new JPanel(); 135 painelCentro.setLayout( gridDados ); 136 painelCentro.setBackground( Color.lightGray ); 137 painelCentro.add( temaJogada ); 138 painelCentro.add( temasJogada ); 139 painelCentro.add( nomeJogador ); 140 painelCentro.add( fieldNomeJogador ); 141 //painelCentro.add( som ); 142 painelCentro.add(nivelDificuldade); 143 144 menuDificuldade = new JMenu("Nvel de Dificuldade"); 145 menuDificuldade.setBackground( Color.lightGray ); 146 147 dificuldadeGroup = new ButtonGroup(); 148 149 dificil = new JRadioButtonMenuItem("Difcil (6X6)"); 150 dificil.setSelected(true); 151 152 dificil.addActionListener(new ActionListener(){ 153 154 public void actionPerformed(ActionEvent evt){ 155 jogoFacil = false; 156 nivelDificuldade.setText("Nvel de dificuldade: DIFCIL"); 157 nivelDificuldade.setForeground(Color.red); 158 } 159 }); 160 161 facil = new JRadioButtonMenuItem("Fcil (4X4)"); 162 163 facil.addActionListener(new ActionListener(){ 164 165 public void actionPerformed(ActionEvent evt){ 166 jogoFacil = true; 167 nivelDificuldade.setText("Nvel de dificuldade: FCIL"); 168 nivelDificuldade.setForeground(Color.blue); 169 } 170 }); 171 172 dificuldadeGroup.add(dificil); 173 dificuldadeGroup.add(facil);

converted by Web2PDFConvert.com

174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

menuDificuldade.add(dificil); menuDificuldade.add(facil); barraMenu = new JMenuBar(); setJMenuBar(barraMenu); barraMenu.setBackground( Color.lightGray ); barraMenu.add(menuDificuldade); // imagem do rodap imagemRodape = new ImageIcon(getClass().getResource("/imagens/jogo/java.gif")); // texto do rodap desenvolvimento = new JLabel( "Desenvolvido em Java", imagemRodape, SwingConstants.CENTER ); desenvolvimento.setFont( fonte10 ); // configurao do painel de rodap painelRodape = new JPanel(); painelRodape.setLayout( gridRodape ); painelRodape.setBackground( Color.white ); painelRodape.add( desenvolvimento ); // configurao do painel de dados (que possui o painel de cabealho, // o painel central e o painel de botes painelDados = new JPanel(); painelDados.setLayout( new BorderLayout( 10, 10 )); painelDados.setBackground( Color.lightGray ); painelDados.add( painelCabecalho, BorderLayout.NORTH); painelDados.add( painelCentro ); painelDados.add( painelBotoes, BorderLayout.SOUTH ); // configurao do container (que tem toda essa baguna a!!! =) container = getContentPane(); container.setLayout( new BorderLayout( 5, 5 ) ); container.setBackground( Color.lightGray ); container.add( painelRodape, BorderLayout.SOUTH ); container.add( painelImagem, BorderLayout.WEST ); container.add( painelDados ); setSize( 550, 380 ); setVisible( true ); setResizable( false ); } private void saidaPrograma(){ telaSaida.setText( "tJogo da Memria - 2005nn"+ "tDesenvolvido por: Luiz Gustavo Stbile de Souzan"+ "tGraduando em Anlise de Sistemas pela "+ "Faculdade de Cincias e Tecnologia de Birigui n"+ "tContato: luizgustavoss@gmail.comnn"+ "tLinguagem de Desenvolvimento: Java (TM) 2 Standard Edition nn"+ "tRequisitos: J2RE - Java(TM) 2 Runtime Environmentnn"+ "tEste jogo foi desenvolvido com fins educacionais, portanto sem nenhum tipo de garantia.nn" ); JOptionPane.showMessageDialog(null, telaSaida, "Informaes sobre o Jogo", JOptionPane.PLAIN_MESSAGE); System.exit( 0 ); } public void actionPerformed( ActionEvent event ){ // se o evento for do boto sair if ( event.getSource() == botaoSair ){ saidaPrograma(); } // seno do boto iniciar jogo else if ( event.getSource() == botaoIniciarJogo ){ nomeObjJogador = fieldNomeJogador.getText(); objJogador = new Jogador( nomeObjJogador ); if(jogoFacil) objTelaJogo = new TelaJogo( objJogador, indiceTema, 4 ); else objTelaJogo = new TelaJogo( objJogador, indiceTema, 6 ); } } public void itemStateChanged( ItemEvent event ){ if ( event.getSource() == temasJogada ){ if ( event.getStateChange() == ItemEvent.SELECTED ) indiceTema = indiceTemas[ temasJogada.getSelectedIndex() ];

converted by Web2PDFConvert.com

271 } 272 } 273 274 public static void main( String args[] ){ 275 276 TelaUm application = new TelaUm(); 277 278 application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 279 application.setLocationRelativeTo( null ); 280 } 281 282 } // fim da classe TelaUm

TelaJogo.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TelaJogo extends JFrame implements ActionListener{ /** * Construtor da classe * @Param jog - Objeto jogador, com os dados do jogador * @Param codJog - O tema escolhido * @Param fatorJogo - Inteiro que determina se o jogo 4X4 ou 6X6 */ //ClassLoader cl = this.getClass().getClassLoader(); public TelaJogo( Jogador jog, int codJog, int fatorJogo ){ super( "Jogo da Memria" ); setLocation( 200, 10 ); addWindowListener(new WindowAdapter(){ public void windowClosing( WindowEvent windowEvent ){ mostrarResumoJogo(); } }); fator = fatorJogo; objJogadorJogada = jog; temaJogada( codJog ); preparaArrayImagens(); container = getContentPane(); labelPontosJogador = new JLabel( "Jogador: " + objJogadorJogada.obterNome() + " >> Pontos: " ); pontosJogador = new JLabel( ""+objJogadorJogada.obterPontos() ); imagemSair = new ImageIcon(getClass().getResource("/imagens/jogo/sair.gif")); imagemSairRoll = new ImageIcon(getClass().getResource("/imagens/jogo/sairRoll.gif")); // configura o boto sair botaoSair = new JButton(" Sair do Jogo ", imagemSair); botaoSair.setRolloverIcon( imagemSairRoll ); botaoSair.addActionListener( this ); painelImagens = new JPanel(); painelPontos = new JPanel(); // configurando o painel superior painelPontos.setBackground( Color.white ); painelPontos.add( labelPontosJogador ); painelPontos.add( pontosJogador ); grid = new GridLayout( fator, fator, 5, 5 ); painelImagens.setLayout( grid ); imagemPadrao = new ImageIcon(getClass().getResource("/imagens/jogo/standard.gif")); posicoesFiguras = new MyButton[( fator * fator )]; for ( int cont = 0; cont < ( fator * fator ); cont++ ){ posicoesFiguras[ cont ] = new MyButton(imagemPadrao, imagens[cont]); posicoesFiguras[ cont ].addActionListener( this ); painelImagens.add( posicoesFiguras[ cont ] ); } container.add( painelPontos, BorderLayout.NORTH); container.add( botaoSair, BorderLayout.SOUTH ); container.add( painelImagens ); double d_largura = (fator == 4?82.5:80); d_largura *= fator; int i_largura = (int) d_largura; setSize( i_largura, i_largura+70 );

converted by Web2PDFConvert.com

082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

setVisible( true ); setResizable( false ); } /** * Prepara o Array de Imagens * */ private void preparaArrayImagens(){ int posicaoNoArray, x, y; this.imagens8 = new Icon[(fator * fator)/2]; for ( x = 0; x < ((fator*fator)/2); x++ ){ this.imagens8[ x ] = new ImageIcon(getClass().getResource(tema + ( x + 1 ) + ".GIF")); } this.imagens = new Icon[ (fator*fator) ]; for ( x = 0; x < 2; x++ ){ for ( y = 0; y < ((fator*fator)/2); y++ ){ do{ posicaoNoArray = ( int ) ( Math.random() * (fator*fator) ); }while( this.imagens[ posicaoNoArray ] != null ); this.imagens[ posicaoNoArray ] = imagens8[ y ]; } } } /** * Descobre o tema escolhido * @Param codTema - Cdigo do tema escolhido */ private void temaJogada( int codTema ){ switch( codTema ){ case 1: this.tema = "/imagens/duke/"; break; case 2: this.tema = "/imagens/tux/"; break; } } /** * Mostra o resumo do jogo ao sair * */ private void mostrarResumoJogo(){ resumoJogo = "Jogador: " + objJogadorJogada.obterNome() + "nn" + "Pontos: " + objJogadorJogada.obterPontos() + "nn" + "Quantidade de tentativas: " + qtdeTentativas; JOptionPane.showMessageDialog( null, ""+resumoJogo, "Resumo do Jogo", JOptionPane.INFORMATION_MESSAGE ); setVisible( false ); System.gc(); } public void actionPerformed( ActionEvent event ){ // Se o evento for do boto Sair... if ( event.getSource() == botaoSair ){ mostrarResumoJogo(); } // Caso contrrio evento de botes de imagem else{ // testa se o primeiro clique if( primeiroClique ){ qtdeTentativas++; // testa se o jogador errou na jogada anterior if ( !acertou ){ botaoUm = (MyButton) botaoClicadoUm; botaoDois = (MyButton) botaoClicadoDois; botaoUm.setImagemPadrao(); botaoDois.setImagemPadrao(); } botaoClicadoUm = event.getSource();

converted by Web2PDFConvert.com

179 180 botaoUm = (MyButton) botaoClicadoUm; 181 botaoUm.setImagemBotao(); 182 183 // indica que este foi o primeiro clique 184 primeiroClique = !primeiroClique; 185 } 186 187 // se no for o primeiro clique 188 else{ 189 190 botaoClicadoDois = event.getSource(); 191 botaoDois = (MyButton) botaoClicadoDois; 192 193 // verifica se o jogador clicou no mesmo boto 194 if ( botaoClicadoDois == botaoClicadoUm ){ 195 196 acertou = false; 197 198 JOptionPane.showMessageDialog( null, "Ao no permitida!", 199 "Ao No Permitida", JOptionPane.WARNING_MESSAGE ); 200 } 201 202 // se no for o mesmo boto... 203 else{ 204 205 // coloca a imagem no boto 206 botaoDois.setImagemBotao(); 207 208 // compara com o primeiro boto clicado 209 if ( botaoUm.getImagemBotao().equals( botaoDois.getImagemBotao())){ 210 211 acertou = true; 212 qtdeAcerto++; 213 214 // Desabilita os botes 215 botaoUm.setEnabled( false ); 216 botaoDois.setEnabled( false ); 217 218 // incrementar pontos 219 objJogadorJogada.incrementarPontos(); 220 221 pontosJogador.setText( ""+objJogadorJogada.obterPontos() ); 222 223 // se foi o ltimo par encontrado, apresenta resumo do jogo e fecha a janela 224 if ( qtdeAcerto == ((fator*fator)/2) ){ 225 226 mostrarResumoJogo(); 227 setVisible( false ); 228 System.gc(); 229 } 230 } 231 232 // se no for o mesmo boto 233 else{ 234 235 acertou = false; 236 237 //decrementar pontos 238 objJogadorJogada.decrementarPontos(); 239 240 pontosJogador.setText( ""+objJogadorJogada.obterPontos() ); 241 } 242 243 // indica que este foi o segundo clique 244 primeiroClique = !primeiroClique; 245 } 246 } 247 } 248 } 249 250 private Object botaoClicadoUm = new Object(); 251 private Object botaoClicadoDois = new Object(); 252 private JLabel pontosJogador, labelPontosJogador; 253 private JPanel painelImagens, painelPontos; 254 private JButton botaoSair; 255 private Icon imagemSair, imagemSairRoll, imagens[], imagemPadrao, imagens8[]; 256 private GridLayout grid; 257 private Container container; 258 private String tema, resumoJogo = ""; 259 private Jogador objJogadorJogada; 260 private int fator, qtdeAcerto, qtdeTentativas = 0; 261 private boolean primeiroClique = true; 262 private boolean acertou = true; 263 private MyButton botaoUm, botaoDois, posicoesFiguras[]; 264 265 } // fim TelaJogo

Os arquivos de im agem necessrios estaro disponveis para download ao final do post. No vou explicar o jogo passo-a-passo (ahhhhhhh) m as se voc est com eando a aprender Java, esse pequeno jogo um a boa oportunidade para aprender a usar com ponentes de tela bsicos, assim com o aprender a usar tratam ento de eventos desses com ponentes. Depois de com piladas as classes (com o com ando javac [nom e-da-classe.java], pelo console), basta executar a classe

converted by Web2PDFConvert.com

TelaUm .java (java TelaUm , pelo console).

Jogo em execuo Im a g e n s p a r a o Jo g o Queria colocar todas as im agens com pactadas para download, m as no possvel (at onde eu sei). Portanto, colocarei aqui as im agens referentes a cada diretrio. No caso das im agens dos diretrios tux e duke, que eram m uitas, eu dei um printscreen na tela e postarei um a im agem s, com todas (separadas, um a nica im agem para o diretrio tux e um a nica im agem para o diretrio duke). Vocs tero o trabalho de recortar cada um a, no tam anho de 7070 pixels. Aproveitem para renom ear cada um a de acordo com o que se v nas im agens. No caso das im agens do jogo (im agens de tela, botes), por apresentarem tam anhos diversos optei por colocar um a a um a. Vam os a elas: ( im p o r ta n te 1 : c liq u e s o b r e a s im a g e n s p a r a q u e e la s s e ja m a b e r ta s n o ta m a n h o o r ig in a l, p a r a s d e p o is s a lv a r e m a s m e s m a s ) Im agens do diretrio duke

Im agens do diretrio tux

Im agens do diretrio jogo

converted by Web2PDFConvert.com

Se tiverem dvidas, fique vontade para postar com entrios! Com entrios (25)

7, novembro 2008

Exemplo de JInternalFrame
Filed under: Tutorial Tags:Java, JInternalFram e, Swing luizgustavoss @ 4:07 am

Segue um exem plo, com algum a adaptao, que postei h um tem po no GUJ. Trata-se de um exem plo de com o usar o JInternalFram e. Por ser um a dica rpida, no vou entrar em detalhes sobre os com ponentes em questo, isso pode ser encontrado em diversos lugares em m aiores detalhes, incluindo o site da prpria docum entao do Swing. No final h alguns links de referncia. Espero que seja til.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Principal extends JFrame{ private private private private private private JDesktopPane desktopPane; JMenuItem menuItem1, menuItem2; JMenuBar menuBar; JMenu menu; InternalFrameUm frameUm; InternalFrameDois frameDois;

public Principal(){ super("Exemplo de JDesktopPane"); int inset = 50; Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setBounds(inset, inset, screenSize.width - inset*2, screenSize.height - inset*2); desktopPane = new JDesktopPane(); menuItem1 = new JMenuItem("InternalFrameUm"); menuItem1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ if(frameUm == null){ frameUm = new InternalFrameUm(); frameUm.setVisible(true); desktopPane.add(frameUm); } else if(!frameUm.isVisible()){ frameUm.setVisible(true); desktopPane.add(frameUm); } } }); menuItem2 = new JMenuItem("InternalFrameDois"); menuItem2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ if(frameDois == null){ frameDois = new InternalFrameDois(); frameDois.setVisible(true); desktopPane.add(frameDois); }
converted by Web2PDFConvert.com

53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 }

else if(!frameDois.isVisible()){ frameDois.setVisible(true); desktopPane.add(frameDois); } } }); menuBar = new JMenuBar(); menu = new JMenu("Opes"); setContentPane(desktopPane); menu.add(menuItem1); menu.add(menuItem2); menuBar.add(menu); setJMenuBar(menuBar); setVisible(true); setResizable(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]){ Principal p = new Principal(); }

Nos JPanel criados abaixo, apenas coloquei um a cor de fundo, para exem plificar. O im portante aqui m ostrar com o fixar os JPanel ao JInternalFram e. Nesses JPanel poderiam ser colocados diversos outros com ponentes de tela, com o botes, cam pos de entrada, etc
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import import import import javax.swing.JInternalFrame; java.awt.event.*; java.awt.*; javax.swing.JPanel;

public class InternalFrameUm extends JInternalFrame { public InternalFrameUm() { super("Internal Frame Um", true, //resizable true, //closable true, //maximizable true);//iconifiable setSize(300,300); setSize(300,300); JPanel panel = new JPanel(); panel.setBackground(Color.GREEN); Container container = getContentPane(); container.add(panel); } } import import import import javax.swing.JInternalFrame; java.awt.event.*; java.awt.*; javax.swing.JPanel;

public class InternalFrameDois extends JInternalFrame { public InternalFrameDois() { super("Internal Frame Um", true, //resizable true, //closable true, //maximizable true);//iconifiable setSize(300,300); JPanel panel = new JPanel(); panel.setBackground(Color.YELLOW); Container container = getContentPane(); container.add(panel); } }

isto! Procurei criar um exem plo bem sim ples, que v direto ao ponto. Qualquer dvida ou sugesto ou crtica bem vinda! At o prxim o post!

converted by Web2PDFConvert.com

Referncias: http://java.sun.com /docs/books/tutorial/uiswing/com ponents/internalfram e.htm l Com entrios (3) Tem a: Silver is the New Black. Blog no WordPress.com .

converted by Web2PDFConvert.com

Você também pode gostar