Olá bem sou iniciante e espero que eu esteja postando no lugar certo
Tenho um menu onde tenho que usar metodo inserir , remover e assim por adiante…
Usei vários exemplos, porém aparece um erro onde está citado em vermelho e eu não sei o que é e eu creio que é facil de ser resolvido. O codigo-fonte está abaixo:
package components;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import main.InserirCliente;
import main.RemoveCliente;
public class MenuDemo implements ActionListener {
public JMenuBar createMenuBar() {
JMenuBar menuBar;
JMenu menu;
JMenuItem mcInserir, mcRemover;
menuBar = new JMenuBar();
menu = new JMenu("Arquivo");
menuBar.add(menu);
mcInserir = new JMenuItem("Inserir");
mcInserir.addActionListener(this);
menu.add(mcInserir);
mcRemover = new JMenuItem("Remover");
mcRemover.addActionListener(this);
menu.add(mcRemover);
return menuBar; }
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == [color=red]mcInserir[/color])
new InserirCliente();
else
if (e.getSource()== [color=red]mcRemover[/color])
new RemoveCliente();
}
protected String getClassName(Object o) {
String classString = o.getClass().getName();
int dotIndex = classString.lastIndexOf(".");
return classString.substring(dotIndex+1);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("MenuDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MenuDemo demo = new MenuDemo();
frame.setJMenuBar(demo.createMenuBar());
frame.setSize(450, 260);
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Quem souber por favor me ajude a resolver ele, pois preciso dele para faculdade.
Obrigada pela atenção
Humm… mcInserir e mcRemover tem escopo somente dentro de createMenuBar(). Coloque como propriedades do seu MenuDemo.
Olá alexandrehdk, obrigado por responder.
Não entendi o que voce quis dizer (sou bem iniciante nessa coisas rsrs)
Poderia colocar em codigo pra mim entender melhor, por favor
Obrigado
package components;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import main.InserirCliente;
import main.RemoveCliente;
public class MenuDemo implements ActionListener {
JMenuItem mcInserir, mcRemover;
public JMenuBar createMenuBar() {
JMenuBar menuBar;
JMenu menu;
menuBar = new JMenuBar();
menu = new JMenu("Arquivo");
menuBar.add(menu);
mcInserir = new JMenuItem("Inserir");
mcInserir.addActionListener(this);
menu.add(mcInserir);
mcRemover = new JMenuItem("Remover");
mcRemover.addActionListener(this);
menu.add(mcRemover);
return menuBar;
}
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == mcInserir)
new InserirCliente();
else if (e.getSource() == mcRemover)
new RemoveCliente();
}
protected String getClassName(Object o) {
String classString = o.getClass().getName();
int dotIndex = classString.lastIndexOf(".");
return classString.substring(dotIndex + 1);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("MenuDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MenuDemo demo = new MenuDemo();
frame.setJMenuBar(demo.createMenuBar());
frame.setSize(450, 260);
frame.setVisible(true);
}
public static void main(String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Só movi a declaração de mcInserir e mcRemover para fora do método createMenuBar(), deixando esses 2 objetos disponíveis para serem usados por outros métodos, como o actionPerformed().
Olá
Deu certo obrigada.
Só que agora ele não que chamar outra classe InserirCliente.java
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == mcInserir)
[color=darkblue]new InserirCliente(); //InserirCliente.java[/color]
else
if (e.getSource()== mcRemover)
new RemoveCliente();
}
Tentei colocar outro comando no lugar: [color=red]InserirCliente cliente[/color] = new InserirCliente(); porém o que está em vermelho dá erro.
Como poderei resolver esse problema?
Obrigada.
Olá pessoal.
Porque eu não consigo chamar outro arquivo .java como está abaixo
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == mcInserir)
new InserirCliente(); //a classe que eu deveria chamar
Por favor me digam onde errei o comando.
Obrigada.
Olá
Você não pode usar simplesmente new InserirCliente(), pois isto é instanciar uma classe do tipo InserirCliente. Quando você colocou:
InserirCliente cliente = new InserirCliente();
Então está mais correto, só que só funciona se a classe InserirCliente possuir um construtor vazio ou não ter construtores declarados.
Olá obrigada por responder
O que seriam construtores? Será que poderia ser erro da outra classe InserirCliente.java?
Veja o codigo abaixo se tiver mais algum erro pode me ajudar mais uma vez? Obs : eu uso o hibernate.
package main;
import javax.swing.JOptionPane;
import percistencia.Cliente;
import dao.ClienteDAO;
public class InserirCliente {
public static void main(String[] args){
int resp;
do{
Cliente cli = new Cliente();
String entrada;
entrada = JOptionPane.showInputDialog("Nome Fantasia: ");
cli.setNomefantasia(entrada);
entrada = JOptionPane.showInputDialog("Razão Social: ");
cli.setRazaosocial(entrada);
entrada = JOptionPane.showInputDialog("Rua: ");
cli.setRua(entrada);
entrada = JOptionPane.showInputDialog("Cidade: ");
cli.setCidade(entrada);
ClienteDAO cdao = new ClienteDAO();
cdao.gravar(cli);
resp = JOptionPane.showConfirmDialog(null, “Deseja finalizar a Execução?”, “Saída”, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
}while (resp==1);
System.out.println(0); } }
Obrigada pela ajuda.
Mais uma pergunta: onde devo por esses construtores?
Obrigada
Meu caneco, de onde você está tirando essas classes? Parece mais que você está fazendo uma adaptação de um programa a la frankenstein.
Acho que o seu problema está no básico do básico do Java. Em todo caso, acho que alguma coisa se resolve se você trocar (na classe InserirCliente)
public static void main(String[] args)
por
public static void Inserir()
Faça algo semelhante na classe RemoveCliente e então substitua
if (e.getSource() == mcInserir)
InserirCliente.Inserir();
else
if (e.getSource()== mcRemover)
RemoveCliente.Remover();
}
Explicação (por favor, diga que entendeu): Estamos criando métodos estáticos nas classes InserirCliente e RemoveCliente, ou seja, são métodos que não dependem de você ter uma instâncias dessas classes para executar esses métodos (pelo que parece no seu código, não precisa mesmo ter instância de classe). Imagino que as coisas fluirão da mesma forma como se você estivesse executando os programas InserirCliente e RemoveCliente sem essa interface com menus.
Caro amigo, como eu disse sou iniciante portanto tenho muito pouco conhecimento…
E esse forum está me ajudando e muito, pois esse projeto é muito importante pra mim…
Quanto o seu exemplo deu certo, ele abriu o formulario InserirCliente, porém ele não grava os dados que eu coloco
Obs: Tenho o banco de dados, tabela e seus atributos criados.
No InserirClinete eu chamo outra classe para gravar:
ClienteDAO cdao = new ClienteDAO();
cdao.gravar(cli);
E na outra classe ClienteDAO.java, o comando gravar seria esse :
package dao;
import org.hibernate.Session;
import org.hibernate.Transaction;
import percistencia.Cliente;
import util.HibernateUtil;
public class ClienteDAO{
private Session sessao = HibernateUtil.getSessionFactory().openSession();
public void gravar (Cliente cli){
Transaction transacao = sessao.beginTransaction();
sessao.saveOrUpdate(cli);
transacao.commit();
}}
Poderia mais uma vez me ajudar?
Obrigada
Há alguma o que poderia ser para o InserirCliente não gravar os dados?
Obrigada.
Olá pessoal, mais uma vez peço ajuda de vcs. Pois com ajuda de vcs, eu consegui fazer o menu funcionar, porém quando eu clico em Inserir, ele chama os formulários, eu preencho e mando gravar e concluir sem erros só que ele não grava.
//na classe menu:
if (e.getSource() == mcInserir)
InserirCliente.Inserir();
//na classe Inserir:
public static void Inserir()
//comando que peço pra gravar na classe Inserir
ClienteDAO cdao = new ClienteDAO();
cdao.gravar(cli);
//na classe ClienteDAO:
public class ClienteDAO{
private Session sessao = HibernateUtil.getSessionFactory().openSession();
public void gravar (Cliente cli){
Transaction transacao = sessao.beginTransaction();
sessao.saveOrUpdate(cli);
transacao.commit(); }}
Obs: sem o menu, e quando executava somente o Inserir como principal (public static void main(String[] args)) ele gravava tranquilo. Agora que foi adaptado para o funcionamento do menu e a classe Inserir ficou assim: public static void Inserir(), porém não grava mais.
Obrigada mais uma vez pela atenção de vcs.
Alguem pode me ajudar a descobrir onde estou errando? Preciso dela pra faculdade.