[RESOLVIDO] JOptionPane.showMessageDialog não abre?

Pessoal, estou tentando abrir uma caixa de diálogo para dizer que o cadastro foi efetuado com sucesso.

Já tentei abrir um outro jinternalframe, tentei usar o System.out.print, e nada. A última tentativa foi…

JOptionPane.showMessageDialog(null, "Ok");

…mas também não funciona. Estou usando netbeans para o projeto que, por coincidência é meu primeiro :slight_smile: estou estudando java montando um projetinho simples, só para incluir, ver, editar e excluir registros do db.

O código do meu arquivo é o seguinte:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/*

  • cadEspecialidade.java
  • Created on 23/07/2010, 14:05:48
    */

package visao.gui.cadastros;

import java.awt.Dimension;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
*

  • @author tiago
    */
    public class cadEspecialidade extends javax.swing.JInternalFrame {

    /** Creates new form cadEspecialidade */
    public cadEspecialidade() {
    initComponents();
    }

    public void setPosicao(){
    Dimension d = this.getDesktopPane().getSize();
    this.setLocation((d.width - this.getSize().width)/2,
    (d.height - this.getSize().height)/2);
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      labelNome = new javax.swing.JLabel();
      fNome = new javax.swing.JTextField();
      btCadastrar = new javax.swing.JButton();
      btFechar = new javax.swing.JButton();

      setClosable(true);
      setMaximizable(true);
      setResizable(true);
      setTitle(“Cadastro de especialidades”);

      labelNome.setText(“Nome da especialidade:”);

      btCadastrar.setText(“Cadastrar”);
      btCadastrar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      btCadastrarActionPerformed(evt);
      }
      });

      btFechar.setText(“Fechar”);
      btFechar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      btFecharActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(fNome, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE)
      .addComponent(labelNome)
      .addGroup(layout.createSequentialGroup()
      .addComponent(btCadastrar)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(btFechar)))
      .addContainerGap())
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(labelNome)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(fNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(btCadastrar)
      .addComponent(btFechar))
      .addContainerGap(16, Short.MAX_VALUE))
      );

      pack();
      }//

    private void btCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
    try {
    try {
    Class.forName(“org.postgresql.Driver”);
    } catch (ClassNotFoundException ex) {
    Logger.getLogger(cadEspecialidade.class.getName()).log(Level.SEVERE, null, ex);
    }
    Connection con = DriverManager.getConnection(“jdbc:postgresql://localhost:5433/marcapp”, “postgres”, “paico”);
    Statement stm = con.createStatement();
    String SQL = “INSERT INTO especialidades (nome) VALUES (’”+fNome.getText()+"’)";
    stm.executeQuery(SQL);
    JOptionPane.showMessageDialog(null, “Ok”);
    } catch (SQLException ex) {
    Logger.getLogger(cadEspecialidade.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    private void btFecharActionPerformed(java.awt.event.ActionEvent evt) {
    this.dispose();
    }

    // Variables declaration - do not modify
    private javax.swing.JButton btCadastrar;
    private javax.swing.JButton btFechar;
    private javax.swing.JTextField fNome;
    private javax.swing.JLabel labelNome;
    // End of variables declaration
    }
    [/code]

Desde já agradeço a atenção de todos!

cara sera que o teu problema e o null.

cara quando voce faz isso voce esta mando o dialog abrir centralizado relativo as dimensoes da tela

   1. JOptionPane.showMessageDialog(null, "Ok");  

esperimenta passar uma referencia this enves do null assim ele abrirar relativo a janela chamadora

não tenha certeza quanto a isso mas acho que com o null devia exibir o dialog tenta ai com a referencia this.

comigo sempre funciona não sei porque ta dando errado com tigo.

acredito que voce tenha que informar qual o tipo da mensagem que será exibida, costumo usar essa sintaxe:
JOptionPane.showMessageDialog(null, “SEU TEXTO!!!”, “TITULO DA MSG”, JOptionPane.PLAIN_MESSAGE);

rapaz mesmo assim ainda e estranho porque sempre funciona com os dois
argumanto porque os outros são configurados com as opcoes padroes.

Muito estranho realmente não aparecer, mas faça como o RicardoYukito disse, pode ser que apareça
Abraços

Opa,

obrigado pelas respostas! Mas não deu certo não… ele inclui o registro no banco de dados, normal, mas não abre a janela de ok. A solução do RicardoYukito gerou o seguinte erro no console:

run: 24/07/2010 21:18:00 visao.gui.cadastros.cadEspecialidade btCadastrarActionPerformed SEVERE: null org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta. at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236) at visao.gui.cadastros.cadEspecialidade.btCadastrarActionPerformed(cadEspecialidade.java:117) at visao.gui.cadastros.cadEspecialidade.access$000(cadEspecialidade.java:27) at visao.gui.cadastros.cadEspecialidade$1.actionPerformed(cadEspecialidade.java:64) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

já a do ajinfotec de trocar o null pelo this gerou o seguinte erro:

24/07/2010 21:18:58 visao.gui.cadastros.cadEspecialidade btCadastrarActionPerformed SEVERE: null org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta. at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236) at visao.gui.cadastros.cadEspecialidade.btCadastrarActionPerformed(cadEspecialidade.java:117) at visao.gui.cadastros.cadEspecialidade.access$000(cadEspecialidade.java:27) at visao.gui.cadastros.cadEspecialidade$1.actionPerformed(cadEspecialidade.java:64) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

O System.out.print não deveria fazer o serviço também? Ou só serve para o console?

EDIT: descobri que o erro ocorre com ou sem a linha JOptionPane.showMessageDialog! O netbeans não informa nenhuma anomalia no código, o registro é inserido, mas ainda sim é gerado esse código:

24/07/2010 21:29:46 visao.gui.cadastros.cadEspecialidade btCadastrarActionPerformed SEVERE: null org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta. at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236) at visao.gui.cadastros.cadEspecialidade.btCadastrarActionPerformed(cadEspecialidade.java:117) at visao.gui.cadastros.cadEspecialidade.access$000(cadEspecialidade.java:27) at visao.gui.cadastros.cadEspecialidade$1.actionPerformed(cadEspecialidade.java:64) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Agora me perdi de vez… :confused: Alguém tem idéia do que pode estar errado?

Cara, realmente muito estranho isso, olhando assim não consegui ver erro nenhum…
Está gravando os registros no banco?

ta estranho …
debuga pra ver a linha certa que isso acontece e poste o codigo referente pra nós…

oi thiago, tá gravando os dados perfeitamente. Ricardo, o código que gerou foi:

24/07/2010 22:05:16 visao.gui.cadastros.cadEspecialidade btCadastrarActionPerformed SEVERE: null org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta. at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236) at visao.gui.cadastros.cadEspecialidade.btCadastrarActionPerformed(cadEspecialidade.java:118) at visao.gui.cadastros.cadEspecialidade.access$000(cadEspecialidade.java:28) at visao.gui.cadastros.cadEspecialidade$1.actionPerformed(cadEspecialidade.java:65) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

acho que é o mesmo código dos outros…

fiz uma única modificação no código, que o netbeans sugeriu, que foi na linha 117, que ficou assim:

ResultSet executeQuery = stm.executeQuery(SQL);

Ele sugeriu criar uma variábel para o que estava sendo feito.

Espero que não me interpretem mal mas, tomei a liberdade de upar o projeto, que tá no inicio, para o caso de alguém quiser e puder baixar e dar uma olhada mais de perto no problema:

http://www.easy-share.com/1911447864/marcapp.tar.gz

Se vocês já viram algo no erro acima, por favor, podem me passar que já testo aqui.

Mais uma vez, muito obrigado pela atenção de todos!

[quote=paico]oi thiago, tá gravando os dados perfeitamente. Ricardo, o código que gerou foi:

24/07/2010 22:05:16 visao.gui.cadastros.cadEspecialidade btCadastrarActionPerformed SEVERE: null org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta. at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236) at visao.gui.cadastros.cadEspecialidade.btCadastrarActionPerformed(cadEspecialidade.java:118) at visao.gui.cadastros.cadEspecialidade.access$000(cadEspecialidade.java:28) at visao.gui.cadastros.cadEspecialidade$1.actionPerformed(cadEspecialidade.java:65) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

acho que é o mesmo código dos outros…

fiz uma única modificação no código, que o netbeans sugeriu, que foi na linha 117, que ficou assim:

ResultSet executeQuery = stm.executeQuery(SQL);

Ele sugeriu criar uma variábel para o que estava sendo feito.

Espero que não me interpretem mal mas, tomei a liberdade de upar o projeto, que tá no inicio, para o caso de alguém quiser e puder baixar e dar uma olhada mais de perto no problema:

http://www.easy-share.com/1911447864/marcapp.tar.gz

Se vocês já viram algo no erro acima, por favor, podem me passar que já testo aqui.

Mais uma vez, muito obrigado pela atenção de todos! [/quote]

Faz o seguinte…
Troca o seu código de:

ResultSet executeQuery = stm.executeQuery(SQL);

para

stm.execute(SQL);

O erro acontecia por que o seu código sql que você executava não retornava nada, com isto você não pode realizar o executeQuery.

olá edinei, era assim que estava antes, e também gerava erro. E das duas formas está executando o sql.

Amigo experimenta colocar ponto e vírgula no final de sua instrução SQL.

//Ficando assim:
String SQL = "INSERT INTO especialidades (nome) VALUES ('"+fNome.getText()+"');";  

Att,
Wanderson Carvalho.

Mas olha, teu primeiro post que você colocou estava:

stm.executeQuery(SQL);  

você já tentou executar:

stm.execute(SQL);  

???

wanderson.si, infelizmente o “;” não resolveu muito, continuou gerando erro.

edineimanica, falha minha, não tinha reparado o “sumisso” do “Query” na tua sugestão. Funcionou! :slight_smile: Inclusive o JOptionPane.showMessageDialog(null, “Ok”) funcionou também :smiley:

Obrigado mesmo cara! E obrigado a todos que me emprestaram um tempinho e deram uma mão também!

Agora não saio mais do GUJ! :smiley:

Um abraço gurizada! Valeu mesmo!

[quote=paico]wanderson.si, infelizmente o “;” não resolveu muito, continuou gerando erro.

edineimanica, falha minha, não tinha reparado o “sumisso” do “Query” na tua sugestão. Funcionou! :slight_smile: Inclusive o JOptionPane.showMessageDialog(null, “Ok”) funcionou também :smiley:

Obrigado mesmo cara! E obrigado a todos que me emprestaram um tempinho e deram uma mão também!

Agora não saio mais do GUJ! :smiley:

Um abraço gurizada! Valeu mesmo![/quote]
De nada,
a diferença de passar null e passar this é que a segunda (this) iria abrir o JOptionPane como modal.