Porque algum faria isso?

34 respostas
danieldestro

public static boolean isNull(Object obj) { boolean isNull; try { obj.toString(); isNull = false; } catch (NullPointerException e) { isNull = true; } return isNull; }

34 Respostas

T

Isso se chama “despair-driven programming”.
Provavelmente o autor dessa traquitana teve algum problema com NullPointerException e foi na base da tentativa e erro até chegar a essa obra-prima.
Dá a entender que o sistema dele é tão complicado, e ele depende muito de toString. Então o tal método, na verdade, não testa se o objeto é nulo, e sim se em algum ponto do sistema dele, a tal classe tem uma implementação de toString que acaba tendo algum problema de null pointer exception.

Fabricio_Cozer_Marti

:shock:

danieldestro

Espero que este cara não seja certificado.

Vide esta outra pérola aqui: http://www.guj.com.br/posts/list/22926.java

Fabricio_Cozer_Marti

danieldestro:
Espero que este cara não seja certificado.

Vide esta outra pérola aqui: http://www.guj.com.br/posts/list/22926.java


Se ele for, vou falar pra sun tomar o certificado dele! hehehehe

danieldestro

Acho que vou criar a série WTF do GUJ.
Tenho uma abundância de códigos toscos aqui.

1112

Hehe, o www.thedailywtf.com é visita obrigatória diária!

thiago.correa

Isso se chama, Programação desorientada! Ou seja, nem o cara sabeo que ele está fazendo!

Rafael_Nunes

danieldestro:
Acho que vou criar a série WTF do GUJ.
Tenho uma abundância de códigos toscos aqui.

Minha contribuição para o WTF do GUJ, que vi esses dias:

if(obj != null && !obj.equals(obj)){ //faz algo... }else{ throws NullPointerException; }

danieldestro

AUhuaHAUhuHAa… Como algo pode não ser igual a ele mesmo?

thiago.correa

essa é a minha!

if (this.funcionario[0]==null){
    funcionario[0]=f;}
else {
    funcionario [contador++]=f; }
}
danieldestro

Hummmmm… não vejo nada demais ai. Depende da regra dele.

thiago.correa

esqueci de mencionar, era para preencher uma pilha, via se a posição estava nula, caso contrário passava para a próxima!

oliveirarenan
ClasseX classeX = new ClasseX ();
classeX .addColumn("Tipo Réu", "%dsTipo" );		
classeX .addColumn("Sequência", "%cdSequencia" );
classeX .addColumn("Documento", "%cdDocumento" );
classeX .addColumn("Nome", "%dsNome" );		
classeX .addColumn("Período", "%periodo" );		
classeX .addColumn("Advogado", "%dsNomeAdvogado" );		
classeX .addColumn("OAB", "%cdOABAdvogado" );		
classeX .addColumn("UF", "%cdSiglaUFDocumentoAdvogado" );	

classeX .setTitle("Detalhes");
classeX .setSubTitle("Réu");
classeX .setWindowHeight("400");
classeX .setWindowWidth("500");

TableGrid grid = new TableGrid();
GridText label;
GridText field;

grid.setTitle( new GridText("Réu", "ttltab1") );
grid.setMultiSelection( true ); 
grid.setVisibleCheckBox( true, "ttltab2" );
grid.setVisibleError( false, "ttltab2" );
grid.setVisibleStatus( false, "ttltab2" );
grid.setVisibleStatus( true, "ttlTab2" );
grid.setMaxRecordsShown( 5 );
grid.setMaxPagesBlock( 5 );
grid.setPaginacao( true, "ttltab1", ACAO_PAGINACAO );
grid.processPage( "0" );
grid.setImageGridPath( "/gcpj/imagens/" );
grid.setImagePath("/imagens/");

if(pIndTipoOperacao.equalsIgnoreCase("A")){

label = new GridText("N&ordm Documento", "ttlTab2");
field = new GridText("cdDocumento", "txtTab1");
grid.addColumn(new GridColumn(label, field, 140));

label = new GridText("Nome", "ttlTab2");
field = new GridText("dsNome", "txtTab1");
grid.addColumn( new GridColumn( label, field, 370, "", "", "javascript:abrirPopUpDetalhes('%cdCodigoReu', '%cdCodigoGCC', '%cdCodigoFilialGCC', '%cdCodigoControleGCC', '%cdIndicativoOrigemTabela','%dsTipo', '%flagFunc', '%cdEmpresaIncorporada' )"));

label = new GridText("Seq.", "ttlTab2");
field = new GridText("cdSequencia", "txtTab1");
grid.addColumn( new GridColumn(label, field, 46));

} else {

label = new GridText("N&ordm Documento", "ttlTab2");
field = new GridText("cdDocumento", "txtTab1");
grid.addColumn(new GridColumn(label, field, 130));

label = new GridText("Nome", "ttlTab2");
field = new GridText("dsNome", "txtTab1");
grid.addColumn( new GridColumn( label, field, 340, "", "", "javascript:abrirPopUpDetalhes('%cdCodigoReu', '%cdCodigoGCC', '%cdCodigoFilialGCC', '%cdCodigoControleGCC', '%cdIndicativoOrigemTabela', '%dsTipo', '%flagFunc', '%cdEmpresaIncorporada' )"));

label = new GridText("Período", "ttlTab2");
field = new GridText("dataIni", "txtTab1");
grid.addColumn(new GridColumn(label, field, 30));

label = new GridText("", "ttlTab2");
field = new GridText("dataFim", "txtTab1");
grid.addColumn(new GridColumn(label, field, 30));

label = new GridText("Tipo", "ttlTab2");
field = new GridText("dsTipo", "txtTab1");
grid.addColumn(new GridColumn(label, field, 150));

label = new GridText("Seq.", "ttlTab2");
field = new GridText("cdSequencia", "txtTab1");
grid.addColumn(new GridColumn(label, field, 39));

E esse código aqui???????????
Montar a grid dentro da action...ahahahaha

Pq nao fazemos um campeonato dos piores códigos???

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

danieldestro

Mais um EVGD: http://www.guj.com.br/posts/list/0/30384.java

thiago.correa

Ok, me rendo, o que significa EVGD?

[edit]
Tá já achei a resposta no outro post do Daniel…
[/edit]

1112

My turn:

//Eu quero saber o nome das colunas da tabela "X"
ResultSet resultados = statement.executeQuery( "SELECT * FROM X" );

ResultSetMetaData rsmd = resultados.getMetaData();
//...

Imaginem só que beleza quando a tabela “X” tinha 1238562 linhas! :mrgreen:

Fabricio_Cozer_Marti

Depende da implementação do método equals, se o cara meteu um lógica randômica no equals ?

ai nesse caso um mesmo objeto pode ser diferente dele mesmo :wink:

Agora o phoda foi também lançar NullPointerException, essa aí doeu!

1112

Algum moderador poderia mover os posts com código deste tópico para o EVGD do Daniel. :slight_smile:

Rafael_Nunes

Fabrício Cozer Martins:
Depende da implementação do método equals, se o cara meteu um lógica randômica no equals ?
ai nesse caso um mesmo objeto pode ser diferente dele mesmo :wink:

Não, neste caso em específico o cidadão creio que nunca imaginou implementar o método equals(), foi só uma validação pra ter certeza que tava tudo ok…hehe

danieldestro

Ainda assim seria errado. O equals() deve seguir uma regra.

Fabricio_Cozer_Marti

lembrei de uma aqui que rolou com um cara do projeto…
heehehe, foi a maior zuação no dia, quase ele chora … mas era assim:

if (true){
  //faz alguma coisa que nao to lembrado ...
}else{
  //faz outra coisa que tb nao to lembrado, mas ele achava q essa outra
  // coisa ia ser executada hehehehe
}

tem outras tb, depois q eu lembrar direito eu envio … rs

peron

ufa, ainda bem que nao vi nenhum codigo meu ai!
heheheheh

bom, vou acompanhar este tópico até o fim!

hehehehehe

vlw :lol: :lol: :lol:

Fabricio_Cozer_Marti

Ainda assim seria errado. O equals() deve seguir uma regra.
sim, ‘deveria’! Mas quem verifica essas regras ? Que eu saiba não existe um validador pra isso, se existir deve ser algo como um check-code da vida …

danieldestro

Pessoal, por favor, coloquem os códigos toscos neste post: http://www.guj.com.br/posts/list/30384.java

renatosilva

Isso. Acho que o cara só colocou nomes esquisitos nas coisas. Ele devia estar testando pra achar implementações desastradas de toString(). Talvez assim ficasse melhor, apesar de que era mais fácil usar um depurador ehehhe:

danieldestro:
public static boolean throwsNPEOnToString(Object obj) { boolean result; try { obj.toString(); result = false; } catch (NullPointerException e) { result = true; } return result; }

Ainda assim seria errado. O equals() deve seguir uma regra.
sim, ‘deveria’! Mas quem verifica essas regras ? Que eu saiba não existe um validador pra isso, se existir deve ser algo como um check-code da vida …

Quem escreve o equals() deve garantir que ele funcione corretamente, ou seja, você mesmo valida. Que regras são essas? Olha a documentação do método.

Escrever equals() errado é pecado :smiley:

rodrigo_flausino

#@®®¡$:
My turn:

//Eu quero saber o nome das colunas da tabela "X"
ResultSet resultados = statement.executeQuery( "SELECT * FROM X" );

ResultSetMetaData rsmd = resultados.getMetaData();
//...

Imaginem só que beleza quando a tabela “X” tinha 1238562 linhas! :mrgreen:

Putz! Daí complica a vida do sujeito!

Existe algum método melhor? E que não percorra todas as linhas da tabela?

Ironlynx
Pow, se é para avacalhar, essa é minha(repare no UIManager jogado no main, q zona):
/******Programa de Cadastro de DVD´s*****Menu Principal Da Aplicação*************************
 ********************************************************************************************
 *@version 0.2beta 6/06/2004****************************************************************
 ********************************************************************************************
 *@author Ironlynx **************************************************************************
 ********************************************************************************************
 *Copyright(c) 2004 Ironlynx Solutions, Inc All  Rights Reserved.****************************   
 *******************************************************************************************/
//package clipstudiodvds;
  
import java.awt.*;
import java.awt.event.*;
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;

import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;

import javax.swing.UIManager.*;
import javax.swing.LookAndFeel;
import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;

import com.l2fprod.gui.plaf.skin.*;//importará o Skin L&F
import com.l2fprod.gui.plaf.skin.SkinLookAndFeel;



public class Principal implements ActionListener, ItemListener,
   MouseListener {
   	
   private JFrame frame = null;
   private JWindow splashScreen = null;
   private JTextArea saida;
   private JScrollPane scroll;
   private JDesktopPane desktop;
   
   private Cadastro cadastro;//variável do tipo cadastro que será usada para
                             //criar a JInternalFrame de cadastro de dvd´s
   private Consulta consulta;//variável que será usada para referenciar a tela de consulta
                             //que será criada                             
                             
   //itens(variáveis de instância) da Barra de Menus
   private JMenuBar menuBar;
   private JMenu menu,menu2,menu3,menu4,menu5,menu6;   
   private JMenuItem[] menuItem=new JMenuItem[8];
   private JMenuItem[] menuItem2=new JMenuItem[5];
   private JMenuItem[] menuItem3=new JMenuItem[5];
   private JMenuItem[] menuItem4=new JMenuItem[2];
   private JMenuItem[] menuItem5=new JMenuItem[2];
  
   public JRadioButtonMenuItem[] rbMenuItem=new JRadioButtonMenuItem[5];
   
   // Aparências(aspectos de Tela) possíveis-são protected pq precisam ser passadas a 
   //JInternalFrame de Cadastro para atualizar a aparência!   
    protected static final String mac      =
            "com.birosoft.liquid.LiquidLookAndFeel";
    protected static final String metal    =
            "javax.swing.plaf.metal.MetalLookAndFeel";
    protected static final String skin    =
             "com.l2fprod.gui.plaf.skin.SkinLookAndFeel"; 
    protected static final String windows  =
              "de.muntjak.tinylookandfeel.TinyLookAndFeel";  
    protected static final String kunststoff = 
            "com.incors.plaf.kunststoff.KunststoffLookAndFeel";         
            
    // Aspecto da tela corrente
    protected static String lookAndFeelAtual = metal;   
    
         	
   public Principal(){
   	exibeTela();
   }//construtor
   
   /*
    *@method criaMenu()-método responsável pela criação da Barra de Menus dos menus e submenus
    */   
   public JMenuBar criaMenu(){
   	                 

        //Cria a barra de menu.
        menuBar = new JMenuBar();
        
         //Constrói o primeiro menu
        menu = new JMenu("Arquivo");//cabeçalho do primeiro menu
        menu.addActionListener(this);
    //    menu.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        menu.setMnemonic(KeyEvent.VK_A);
        menu.getAccessibleContext().setAccessibleDescription(
                "Dados De Arquivo");
        menuBar.add(menu);//adiciona o primeiro menu a barra de menus
        
        //um grupo de JMenuItems
        menuItem[0] = new JMenuItem("Novo Arquivo",KeyEvent.VK_T);
        //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
        menuItem[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
        menuItem[0].getAccessibleContext().setAccessibleDescription(
                "Abre um item de arquivo");
        menu.add(menuItem[0]);
        
        //segunda linha do primeiro menu
        menuItem[1] = new JMenuItem("Abrir Arquivo");
        menuItem[1].setMnemonic(KeyEvent.VK_B);
        menu.add(menuItem[1]);
        
        //terceira linha do primeiro menu
        menuItem[2] = new JMenuItem("Salvar Arquivo");
        menuItem[2].setMnemonic(KeyEvent.VK_C);
        menu.add(menuItem[2]);
        menu.addSeparator();//cria uma linha de separação entre a 3ª e 4ª linha do menu
        //quarta linha do primeiro menu
        menuItem[3] = new JMenuItem("Novo Cadastro");
        menuItem[3].setMnemonic(KeyEvent.VK_D);
        menu.add(menuItem[3]);
        
         //quinta linha do primeiro menu
        menuItem[4] = new JMenuItem("Abrir Cadastro");
        menuItem[4].setMnemonic(KeyEvent.VK_E);
        menu.add(menuItem[4]);
       
        //sexta linha do primeiro menu
        menuItem[5] = new JMenuItem("Deletar Cadastro");
        menuItem[5].setMnemonic(KeyEvent.VK_F);
        menu.add(menuItem[5]);
          
        //sétima linha do primeiro menu
        menuItem[6] = new JMenuItem("Selecionar Cadastro");
        menuItem[6].setMnemonic(KeyEvent.VK_G);
        menu.add(menuItem[6]);
        
        //oitava linha linha do primeiro menu "Arquivo"
        menuItem[7] = new JMenuItem("Sair");
        menuItem[7].setMnemonic(KeyEvent.VK_H);
        menu.add(menuItem[7]);
        
        //criar submenus
        
        //novo menu chamado "Editar"        
        menu2=new JMenu("Editar");
        menu2.setMnemonic(KeyEvent.VK_N);
        menu2.getAccessibleContext().setAccessibleDescription("Menu de edição de itens");
        menuBar.add(menu2);
          
        //primeira linha do segundo menu "Editar"
        menuItem2[0] = new JMenuItem("Cadastro");
        menuItem2[0].setMnemonic(KeyEvent.VK_M);
        menuItem2[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK));
        menu2.add(menuItem2[0]);  
        
        //segunda linha do segundo menu "Editar"
        menuItem2[1] = new JMenuItem("Filme");
        menuItem2[1].setMnemonic(KeyEvent.VK_O);
        menu2.add(menuItem2[1]);
        
         //terceira linha do segundo menu "Editar"
        menuItem2[2] = new JMenuItem("Diretor");
        menuItem2[2].setMnemonic(KeyEvent.VK_P);
        menu2.add(menuItem2[2]);
        
         //quarta linha do segundo menu "Editar"
        menuItem2[3] = new JMenuItem("Ator(es)");
        menuItem2[3].setMnemonic(KeyEvent.VK_Q);
        menu2.add(menuItem2[3]);
        
         //quinta linha do segundo menu "Editar"
        menuItem2[4] = new JMenuItem("Ano de Produção");
        menuItem2[4].setMnemonic(KeyEvent.VK_K);
        menu2.add(menuItem2[4]);
        
         //novo menu chamado "Exibir"        
        menu3=new JMenu("Exibir");
        menu3.setMnemonic(KeyEvent.VK_R);
        menu3.getAccessibleContext().setAccessibleDescription("Menu de exibição de itens");
        menuBar.add(menu3);
        
        //primeira linha do terceiro menu chamado "Exibir"
        menuItem3[0] = new JMenuItem("Cadastro");
        menuItem3[0].setMnemonic(KeyEvent.VK_S);
        menuItem3[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, ActionEvent.ALT_MASK));
        menu3.add(menuItem3[0]);  
        
        //segunda linha do terceiro menu "Exibir"
        menuItem3[1] = new JMenuItem("Filme");
        menuItem3[1].setMnemonic(KeyEvent.VK_T);
        menu3.add(menuItem3[1]);
        
        //terceira linha do terceiro menu "Exibir"
        menuItem3[2] = new JMenuItem("Diretor");
        menuItem3[2].setMnemonic(KeyEvent.VK_U);
        menu3.add(menuItem3[2]);
        
        //quarta linha do terceiro menu "Exibir"
        menuItem3[3] = new JMenuItem("Ator(es)");
        menuItem3[3].setMnemonic(KeyEvent.VK_V);
        menu3.add(menuItem3[3]);
        
        //quinta linha do terceiro menu "Exibir"
        menuItem3[4] = new JMenuItem("Ano de Produção");
        menuItem3[4].setMnemonic(KeyEvent.VK_X);
        menu3.add(menuItem3[4]);
        
        //novo(e 4º) menu chamado "Favoritos"        
        menu4=new JMenu("Favoritos");
        menu4.setMnemonic(KeyEvent.VK_Y);
        menu4.getAccessibleContext().setAccessibleDescription("Menu dos filmes favoritos");
        menuBar.add(menu4);
        
        //primeira linha do quarto menu chamado "Favoritos"
        menuItem4[0] = new JMenuItem("Adicionar a Favoritos");
        menuItem4[0].setMnemonic(KeyEvent.VK_Y+KeyEvent.VK_1);
        menuItem4[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_4, ActionEvent.ALT_MASK));
        menu4.add(menuItem4[0]);  
        
        //segunda linha do quarto menu chamado "Favoritos"
        menuItem4[1] = new JMenuItem("Organizar os Filmes Favoritos");
        menuItem4[1].setMnemonic(KeyEvent.VK_Y+KeyEvent.VK_2);
        menu4.add(menuItem4[1]); 
        
        //código dinâmico dos filmes favoritos
        
        //quinto menu chamado "Imprimir"
        menu5=new JMenu("Imprimir");
        menu5.setMnemonic(KeyEvent.VK_W);
        menu5.getAccessibleContext().setAccessibleDescription("Imprimir filmes");
        menuBar.add(menu5);
        
        //primeira linha do quinto menu chamado "Imprimir"
        menuItem5[0] = new JMenuItem("Lista de Filmes");
        menuItem5[0].setMnemonic(KeyEvent.VK_W+KeyEvent.VK_1);
        menuItem5[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_5, ActionEvent.ALT_MASK));
        menu5.add(menuItem5[0]); 
        
        //segunda linha do quinto menu chamado "Imprimir"
        menuItem5[1] = new JMenuItem("Filme");
        menuItem5[1].setMnemonic(KeyEvent.VK_W+KeyEvent.VK_2);
        menu5.add(menuItem5[1]); 
        
        //sexto menu(de radio buttons) chamado "Aparência"
        menu6=new JMenu("Aparência");
        menu6.setMnemonic(KeyEvent.VK_Z);
        menu6.getAccessibleContext().setAccessibleDescription("Troca a aparência do Programa");
        menuBar.add(menu6);
        
        ButtonGroup group = new ButtonGroup();
        //primeira linha do sexto menu
        rbMenuItem[0]= new JRadioButtonMenuItem("Java Look and Feel");
        rbMenuItem[0].setSelected(true);
        rbMenuItem[0].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_1);
        
        group.add(rbMenuItem[0]);
        rbMenuItem[0].addItemListener(this);//ouvinte de evento para o radioButton
        menu6.add(rbMenuItem[0]);
        
        //segunda linha do sexto menu
        rbMenuItem[1] = new JRadioButtonMenuItem("Macintosh Look and Feel");
        rbMenuItem[1].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_2);
        
        group.add(rbMenuItem[1]);
        rbMenuItem[1].addItemListener(this);
        menu6.add(rbMenuItem[1]);
        
        //terceira linha do sexto menu
        rbMenuItem[2] = new JRadioButtonMenuItem("Motif Look and Feel");
        rbMenuItem[2].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_3);
        group.add(rbMenuItem[2]);
        rbMenuItem[2].addItemListener(this);
         menu6.add(rbMenuItem[2]);
        
        //quarta linha do sexto menu
        rbMenuItem[3] = new JRadioButtonMenuItem("Windows Look and Feel");
        rbMenuItem[3].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_4);
        group.add(rbMenuItem[3]);
        rbMenuItem[3].addItemListener(this);
        menu6.add(rbMenuItem[3]);
        
        //quinta linha do sexto menu
        rbMenuItem[4] = new JRadioButtonMenuItem("Kusnetsoff Look and Feel");
        rbMenuItem[4].setMnemonic(KeyEvent.VK_Z+KeyEvent.VK_5);
        //inserir kusnetsoff Look&Feel
        group.add(rbMenuItem[4]);
        rbMenuItem[4].addItemListener(this);
        menu6.add(rbMenuItem[4]);
        
        adicionaListeners();
                   
        return menuBar;
   }
   
    //***************************eventos do Mouse****************************
    public void mouseClicked(MouseEvent e) { 
     
      } 

      private void checkForTriggerEvent(MouseEvent e) { 
         // if(e.isPopupTrigger()) 
           //   popup.show(e.getComponent(), e.getX(), e.getY()); 
      } 

      public void mouseReleased(MouseEvent e) { 
          if(e.getSource() == desktop) { 
              checkForTriggerEvent(e);    
          } 
      } 

      public void mouseEntered(MouseEvent e) { 
      } 
       
      public void mouseExited(MouseEvent e) { 
      } 
      public void mousePressed(MouseEvent e) { 
          /* if(e.getSource() == desktop) { 
              checkForTriggerEvent(e);    
          }*/       
      } 
    public void mouseDragged(MouseEvent e) { 
    } 
    public void mouseMoved(MouseEvent e) { 
      } 
    
    
   //ação dos menus aqui!
   public void actionPerformed(ActionEvent e) {
   	if(e.getSource() == menuItem[0]) 
            exibirCadastro(e); 
    /*  else if(e.getSource() == menuItem[1]) 
            quit(); 
      else if(e.getSource() == menuItem[2]) 
            quit();
      else if(e.getSource()== menuItem[3])
            exibirCadastro();//para um novo cadastro
      else if(e.getSource()== menuItem[4])
            exibirCadastro();//para abrir o cadastro-visualizar!-       
      else if(e.getSource()== menuItem[5])
            deletarCadastro();
      else if(e.getSource()== menuItem[6])
            selecionarCadastro();           
      else if(e.getSource()==menuItem[7])
           System.exit(0); //sai da aplicação
      else if(e.getSource()==menuItem2[0])
           editarCadastro();//edita um cadastro!
      else if(e.getSource()==menuItem2[1])
           editarFilme();
      else if(e.getSource()==menuItem2[2])
           editarDiretor();          
      else if(e.getSource()==menuItem2[3])
           editarAtor();
      else if(e.getSource()==menuItem2[4])
           editarAno_De_Producao();   */
      else if(e.getSource()==menuItem3[0])
           exibirConsulta(e); /*//exibirá todos os cadastros         
      else if(e.getSource()==menuItem3[1])
           exibirFilme();          
      else if(e.getSource()==menuItem3[2])
           exibirDiretor();
      else if(e.getSource()==menuItem3[3])
           exibirAtor();          
      else if(e.getSource()==menuItem3[4])
           exibirAno_De_Producao();
      else if(e.getSource()==menuItem4[0])
           adicionarFavoritos();
      else if(e.getSource()==menuItem4[1])
           organizarFavoritos();          
      else if(e.getSource()==menuItem5[0])
           imprimirListaDeFilmes();
      else if(e.getSource()==menuItem5[1])
           imprimirFilme();                                                                                        
   	  */  
       
    }
   
    public void itemStateChanged(ItemEvent e) {
      if(rbMenuItem[0].isSelected()){
      	 mudaAparencia(lookAndFeelAtual);
	            }
      else if(rbMenuItem[1].isSelected())
      	  mudaAparencia(mac);  
      else if(rbMenuItem[2].isSelected()){ //MUITOS PROBLEMAS COM ESSE L&FEEL
      	 try{ Skin theSkinToUse = SkinLookAndFeel.loadThemePack("toxicthemepack.zip");
              SkinLookAndFeel.setSkin(theSkinToUse); 
              UIManager.setLookAndFeel(skin); 
              SwingUtilities.updateComponentTreeUI(frame); 
            }catch(Exception exc){
             exc.printStackTrace();
                                 }
           frame.repaint();                            	
                                         }//  mudaAparencia(motif);
      else if(rbMenuItem[3].isSelected())
          mudaAparencia(windows);
      else if(rbMenuItem[4].isSelected())
          mudaAparencia(kunststoff);                 
    }
    
        
    /************Método para alterar o Look & Feel da Aplicação**********************/
    
    /*
     * @method mudaAparencia mudará a aparência da tela principal do programa
     * @return void
     */   
   public void mudaAparencia(String aparencia){
   	      
     try {
        UIManager.setLookAndFeel(aparencia);
        SwingUtilities.updateComponentTreeUI(frame);        
     }
     catch (InstantiationException e) {  
       e.printStackTrace();    	
     }
     catch (ClassNotFoundException e) {
       e.printStackTrace(); 	
     }
     catch (UnsupportedLookAndFeelException e){
       e.printStackTrace(); 	
     }
     catch (IllegalAccessException e) {
       e.printStackTrace(); 	
       }
     
         frame.repaint();
        //frame.pack();-não usar!                
                                               }//fim de mudaAparencia()
                                               
      //método que será responsável pela exibição do cadastro 
   private void exibirCadastro(ActionEvent evt) { 
      if (cadastro == null) { 
         // inicia frame 
         cadastro = new Cadastro(this); 
         // adiciona o frame no DesktopPane 
         desktop.add(cadastro); 
      } 
      // Exibe o frame 
      cadastro.setVisible(true); 

   }  
   
   // este método está declarado como público para poder ser executado por outra classe 
   public void fecharCadastro(ActionEvent evt) { 
      // verifica se há uma referencia válida para o objeto 
      if (cadastro != null) { 
         // libera o objeto 
         cadastro.dispose(); 
         cadastro = null; 
      } 
   } 
   
   //método responsável pela criação da tela de consulta de dados
   private void exibirConsulta(ActionEvent evt) { 
      if (consulta == null) { 
         // inicia frame interno
         consulta = new Consulta(this); 
         // adiciona o frame no DesktopPane 
         desktop.add(consulta); 
      } 
      // Exibe o frame 
      consulta.setVisible(true); 
   }  
   
   //é público para poder ser executado por outra classe
   public void fecharConsulta(ActionEvent evt) { 
      // verifica se há uma referencia válida para o objeto 
      if (consulta != null) { 
         // libera o objeto 
         consulta.dispose(); 
         consulta = null; 
      } 
   } 
   
   public void adicionaListeners(){
   	for(int i=0;i<8;i++)
   	 menuItem[i].addActionListener(this);
   	for(int i=0;i<5;i++)
   	 { menuItem2[i].addActionListener(this);
   	   menuItem3[i].addActionListener(this);}
   	for(int i=0;i<2;i++)
   	 { menuItem4[i].addActionListener(this);
   	   menuItem5[i].addActionListener(this);}    
   	}                                              
   
   public Container criaContentPane() {
        //Create the content-pane-to-be.
        JPanel contentPane = new JPanel(new BorderLayout());
        
        desktop = new JDesktopPane(){
         Image im = (new ImageIcon("background.jpg")).getImage(); 
         public void paintComponent(Graphics g){        
          g.drawImage(im,0,0,this);            }
                                     };//fim do JDesktopPane
        contentPane.setOpaque(true);

        /*//Create a scrolled text area.
        saida = new JTextArea(5, 30);
        saida.setEditable(false);
        scroll = new JScrollPane(saida);

        //Add the text area to the content pane.
        contentPane.add(scroll, BorderLayout.CENTER);*/
        
        contentPane.add(desktop);//adiciono o JDesktopPane ao JPanel 

        return contentPane;
    }
    
    private void exibeTela(){
   	//Decora a janela.
        JFrame.setDefaultLookAndFeelDecorated(true);//não é suportado em todos os L&F´s
        JDialog.setDefaultLookAndFeelDecorated(true);
        
        //Cria e seta a janela.
        frame = new JFrame("Cadastro de filmes em DVD");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //seta a barra e o content pane anexando-os ao JFrame.
        
        frame.setJMenuBar(this.criaMenu());
        frame.setContentPane(this.criaContentPane());
        
        //adiciona o Mouses Listener aos componentes 
        frame.addMouseListener(this);
        frame.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
              
        
        //ajusta o tamanho da janela
        frame.setSize(900,520);
        //centraliza o frame na tela
        frame.setLocationRelativeTo(null);
        //mostra a janela.
        frame.setVisible(true);
        
   	
   }//fim de exibeTela()
   
   public static void main(String[] args) {
   	   	   	  
   	try{
	  UIManager.put ("FileChooser.lookInLabelText", "Consulte:"); 
      UIManager.put ("FileChooser.lookInLabelMnemonic", "o"); 
      UIManager.put ("FileChooser.fileNameLabelText", "Nome do arquivo:"); 
      UIManager.put ("FileChooser.fileNameLabelMnemonic", "N"); 
      UIManager.put ("FileChooser.filesOfTypeLabelText", "Arquivos do tipo:"); 
      UIManager.put ("FileChooser.filesOfTypeLabelMnemonic", "t"); 
      UIManager.put ("FileChooser.upFolderToolTipText", "Um Nível Acima"); 
      UIManager.put ("FileChooser.upFolderAccessibleName", "Para Cima"); 
      UIManager.put ("FileChooser.homeFolderToolTipText", "Inicio"); 
      UIManager.put ("FileChooser.homeFolderAccessibleName", "Inicio"); 
      UIManager.put ("FileChooser.newFolderToolTipText", "Criar uma Nova Pasta"); 
      UIManager.put ("FileChooser.newFolderAccessibleName", "Nova Pasta"); 
      UIManager.put ("FileChooser.listViewButtonToolTipText", "Lista"); 
      UIManager.put ("FileChooser.listViewButtonAccessibleName", "Lista"); 
      UIManager.put ("FileChooser.detailsViewButtonToolTipText", "Detalhes"); 
      UIManager.put ("FileChooser.detailsViewButtonAccessibleName", "Detalhes");        
      UIManager.put ("FileChooser.cancelButtonText", "Cancelar"); 
      UIManager.put ("FileChooser.cancelButtonMnemonic", "C"); 
      UIManager.put ("FileChooser.cancelButtonToolTipText","Cancelar"); 
      UIManager.put ("FileChooser.openButtonText", "Abrir"); 
      UIManager.put ("FileChooser.openButtonMnemonic", "A"); 
      UIManager.put ("FileChooser.openButtonToolTipText","Abrir ");
      UIManager.put ("FileChooser.directoryOpenButtonText","Abrir");
      UIManager.put ("FileChooser.directoryOpenButtonToolTipText","Abrir Diretório");
      UIManager.put ("FileChooser.saveButtonText","Salvar"); 
      UIManager.put ("FileChooser.saveButtonToolTipText","Salvar Arquivo"); 
      UIManager.put ("FileChooser.saveInLabelText", "Salvar em:"); 
      //UIManager.update();
			}	
		catch(Exception e){
		    e.printStackTrace();
		    System.err.println("UIManager nao suportado!"); 
		}	  
   	
        //Agenda um trabalho para o event-dispatching thread:
        //cria e mostra a aplicação GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
              new Principal();}
                                                              });
                
   }//fim do main()
	
 }//fim da classe Principal
Rubem_Azenha

rodrigo_flausino:

Putz! Daí complica a vida do sujeito!

Existe algum método melhor? E que não percorra todas as linhas da tabela?

select count(*) from tabela ???

danieldestro

Ele não quer um count.

Pode fazer assim: SELECT * FROM X WHERE 2 = 1

AUhauuahuAHuAHuahuHAUhuahauHAU… mais um para códigos toscos.

Fabricio_Cozer_Marti

Ele não quer um count.

Pode fazer assim: SELECT * FROM X WHERE 2 = 1

AUhauuahuAHuAHuahuHAUhuahauHAU… mais um para códigos toscos.
hehehe, na verdade ele quer um ResultSet para obter o MetaData, agora qual seria a melhor forma … só procurando hehehehe, de cara essa do destro retornaria sempre 0 registros, mas será que vc conseguiria obter o ResultSetMetaData ? Bem … usei pouco isso, mas com certeza fazer um select em um tabela ‘populosa’ depois de uns 4 meses em produção seria um terror…

Daniel_Quirino_Olive

Eis a minha contribuição com a comunidade (um amigo meu também enfrentou algo parecido em outra empresa):

if(!"".equalsIgnoreCase(umaStringQualquer)){
    //... 
}

thingol:
Isso se chama "despair-driven programming".
Provavelmente o autor dessa traquitana teve algum problema com NullPointerException e foi na base da tentativa e erro até chegar a essa obra-prima.
Dá a entender que o sistema dele é tão complicado, e ele depende muito de toString. Então o tal método, na verdade, não testa se o objeto é nulo, e sim se em algum ponto do sistema dele, a tal classe tem uma implementação de toString que acaba tendo algum problema de null pointer exception.

Já vi umas coisas bizarras acontecerem, como dois objetos (A e B), sendo que A.equals(B) -> true, porém A.hashCode() != B.hashCode(). Se o povo se desse ao trabalho de ler e entender o Javadoc, estas coisas não aconteceriam. Mas pedir uma coisa destas é ser muito ingênuo :frowning:

Luiz-SP

Putz…alguém ja leu algum dos livro do Robert Sedgewick, Algorithms in Java 1-4 e 5…o livro é cheio dessas pérolas, mas o pior eu gosto…eu li Algorithms in C, que eu acho que é um dos melhores livros de algorítimos do mundo, mas na hora de passar pro Java…hhhuummm saiu uma porcaria…já tive até pensando em reescrever todos os algorítimos do livro e mandar pro cara, mas ele é professor em Princeton, provavelmente ia me ignorar…

A página do cara http://www.cs.princeton.edu/~rs/

1112

Ele não quer um count.

Pode fazer assim: SELECT * FROM X WHERE 2 = 1

AUhauuahuAHuAHuahuHAUhuahauHAU… mais um para códigos toscos.

Foi exatamente o que fiz. :thumbup:

Claro, existem outras soluções melhores, mas elas seriam dependentes de banco, o que não era a idéia no caso em questão.

Grinvon

Como já diria alguém que conheco… “tenha medo”

Criado 3 de abril de 2006
Ultima resposta 4 de abr. de 2006
Respostas 34
Participantes 15