public static boolean isNull(Object obj) {
boolean isNull;
try {
obj.toString();
isNull = false;
} catch (NullPointerException e) {
isNull = true;
}
return isNull;
}
Porque algum faria isso?
34 Respostas
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.
:shock:
Espero que este cara não seja certificado.
Vide esta outra pérola aqui: http://www.guj.com.br/posts/list/22926.java
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
Acho que vou criar a série WTF do GUJ.
Tenho uma abundância de códigos toscos aqui.
Hehe, o www.thedailywtf.com é visita obrigatória diária!
Isso se chama, Programação desorientada! Ou seja, nem o cara sabeo que ele está fazendo!
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;
}
AUhuaHAUhuHAa… Como algo pode não ser igual a ele mesmo?
essa é a minha!
if (this.funcionario[0]==null){
funcionario[0]=f;}
else {
funcionario [contador++]=f; }
}
Hummmmm… não vejo nada demais ai. Depende da regra dele.
esqueci de mencionar, era para preencher uma pilha, via se a posição estava nula, caso contrário passava para a próxima!
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º 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º 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:
Mais um EVGD: http://www.guj.com.br/posts/list/0/30384.java
Ok, me rendo, o que significa EVGD?
[edit]
Tá já achei a resposta no outro post do Daniel…
[/edit]
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:
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 
Agora o phoda foi também lançar NullPointerException, essa aí doeu!
Algum moderador poderia mover os posts com código deste tópico para o EVGD do Daniel. 
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![]()
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
Ainda assim seria errado. O equals() deve seguir uma regra.
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
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:
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 …
Pessoal, por favor, coloquem os códigos toscos neste post: http://www.guj.com.br/posts/list/30384.java
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:
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 
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?
/******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
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 ???
Ele não quer um count.
Pode fazer assim: SELECT * FROM X WHERE 2 = 1
AUhauuahuAHuAHuahuHAUhuahauHAU… mais um para códigos toscos.
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…
Eis a minha contribuição com a comunidade (um amigo meu também enfrentou algo parecido em outra empresa):
if(!"".equalsIgnoreCase(umaStringQualquer)){
//...
}
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 
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/
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.
Como já diria alguém que conheco… “tenha medo”