Chamar metodo pelo Botao

10 respostas
M

tenho um metodo que gera um arquivo.etq que imprimi em um impressora zebra:

quero saber como chamo esse metodo em um botao,
porque todas vez que preciso executar e gerar o arquivo.etq preciso dar shift+f6 no netbeans,
quero qe ao inves de dar shift+f6 no netbeans, simplesmente clicar no botao, executando e consequentemente gerando
o arquivo.etq

serei grato se puderem me ajudar…

10 Respostas

H
pulblic class Botao extends JFrame implements ActionListener
{
private JButton botao;

public Botao()
{
   botao = new JButton("Oi eu sou um botão");
   botao.addActionListener( this );

   this.size(300,300);
   this.setVisible(true);
   this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
   this.add(botao);
   
}

public void actionPerformed(ActionEvent e)
{
   //Chame seu metodo aki
}
}

}
M

como criar o botao eu sei, ja criei um formulario Jframe com o botao,

agora dentro do

private void jbGerarActionPerformed(java.awt.event.ActionEvent evt) {
}

que nao sei o que passar como parametro..

se eu fizer assim:

ClasseEiqueta ce = new ClasseEiqueta();
ce.GerarArquivo();

(esse metodo
GerarArquivo
ta dentro da classe
ClasseEiqueta
) porem eu precisoar passar alguma coisa como parameto aki:
ce.GerarArquivo([code]Parametro
);[/code] porque senao ele nao executa, tentei [/code]getname()
(nem sei o que é getName()), ele gera o arquivo, mas nao
com as etiques qe preciso imprimi, e se eu for na classe [code]ClasseEiqueta
e dar shift+f6, ele gera tudo certinho...
E

Cara, alguns pontos:

1.Ajeite a formatação do teu último post que tá praticamente incompreenssível.

2.Você não precisa criar um novo objeto para chamar métodos estáticos, pode fazer uma referência direta a classe como:ClasseEtiqueta.GerarEtiqueta()

3.Não sabemos que string deve ir no parâmetro, então poste o código aonde você chama esse método.

  1. Quando não dá pra passar por parâmetro, é mais fácil armazenar em um atributo estático da classe. Assim, quando você precisar gravar, é só fazer referência a esse atributo. O melhor mesmo é usar esse seu getName(), mas você precisa usar um setName(String s) primeiro, pra poder setar a string com o conteúdo que você quer imprimir.

Tenta fazer o que eu te falei. Qualquer dúvida, posta aí.

M

na verdade tenho esse codigo abaixo qe gera o arquivo.etq com as etiquetas…
esse codigo ta blz, no momento qe eu executo com shift+f6 ele gera certinho as etiquetas que preciso
na quantidade que preciso

public class ClasseEiqueta {

     private Connection getConnection() {
        String etiqueta = "";
        String nom_cliente = "";
        String end_cliente = "";


        Statement stmt;
        ResultSet rs;

        String url = ("jdbc:informix-sqli://192.168.0.242:1525:DATABASE=logix;INFORMIXSERVER=prdfiasini;user=informix;password=informix");

        Connection conn = null;

        System.out.println(url);

        try {
             Class.forName("com.informix.jdbc.IfxDriver");
        }
        catch (Exception e) {
            System.out.println(e);
        }

         try {
            conn = (Connection) DriverManager.getConnection(url);
            System.out.println("\nAqui conn: " + conn.toString());

        } catch (SQLException sqlex) {
            mostrarErro("Erro ao se conectar");
        }


        try {
            System.out.println("Connected ...");
            DatabaseMetaData md = conn.getMetaData();
            System.out.println("Driver name: " + md.getDriverName());
            System.out.println("Driver version: " + md.getDriverVersion());
            System.out.println("Database product name: "
                    + md.getDatabaseProductName());
            System.out.println("Database product version: "
                    + md.getDatabaseProductVersion());


            String sql =  "select clientes.nom_cliente,  "
            + "clientes.end_cliente, "
            + "cidades.den_cidade, "
            + "ordem_montag_lote.num_lote_om, "
            + "ordem_montag_mest.num_om, "
            + "item.den_item, "
            + "cores.den_cor, "
            + "ped_itens_grade.qtd_pecas_solic, "
            + "cidades.cod_uni_feder "
+ "from ordem_montag_mest join ordem_montag_item on (ordem_montag_mest.cod_empresa = ordem_montag_item.cod_empresa and ordem_montag_mest.num_om = ordem_montag_item.num_om) "
     + "join ordem_montag_lote on (ordem_montag_lote.cod_empresa = ordem_montag_mest.cod_empresa and ordem_montag_lote.num_lote_om = ordem_montag_mest.num_lote_om) "
     + "join pedidos on (pedidos.cod_empresa = ordem_montag_item.cod_empresa and pedidos.num_pedido = ordem_montag_item.num_pedido) "
     + "join ped_itens on (pedidos.cod_empresa = ped_itens.cod_empresa and pedidos.num_pedido = ped_itens.num_pedido  and ordem_montag_item.num_sequencia = ped_itens.num_sequencia) "
     + "join estrut_grade on (ped_itens.cod_item = estrut_grade.cod_item_pai and ped_itens.cod_empresa = estrut_grade.cod_empresa) "
     + "join ped_itens_grade on (ped_itens_grade.cod_empresa = ped_itens.cod_empresa "
     +                         "and ped_itens_grade.num_pedido = ped_itens.num_pedido "
     +                         "and ped_itens_grade.num_sequencia = ped_itens.num_sequencia "
     +                         "and ped_itens_grade.cod_grade_1 = estrut_grade.cod_grade_1) "
     + "join item on (estrut_grade.cod_empresa = item.cod_empresa and estrut_grade.cod_item_compon = item.cod_item) "
     + "join cores on (ped_itens_grade.cod_grade_1 = cores.cod_cor) "
     + "join clientes on (pedidos.cod_cliente = clientes.cod_cliente) "
     + "join cidades on (clientes.cod_cidade = cidades.cod_cidade) "
+ "where ordem_montag_lote.num_lote_om = 690 "
+ "order by ordem_montag_mest.num_om, item.den_item ";
              PreparedStatement stmtt =  conn.prepareStatement(sql);
         ResultSet rss = stmtt.executeQuery();

              while (rss.next()){
                nom_cliente = rss.getString("nom_cliente");
                end_cliente = rss.getString("end_cliente");
                String cidade = rss.getString("den_cidade");
                String num_lote_om = rss.getString("num_lote_om");
                String num_om = rss.getString("num_om");
                String den_item = rss.getString("den_item");
                String cor = rss.getString("den_cor");
                float qtd_item = Float.parseFloat(rss.getString("qtd_pecas_solic"));
                String estado = rss.getString("cod_uni_feder");
                int int_qtd_item = Float.floatToIntBits(qtd_item);
                System.out.println(qtd_item);

                for( int i = 0; i < qtd_item; i++ )
                {
                  etiqueta += "^XA";
                  etiqueta += "\n^FWR";
                  etiqueta += "\n ^FO660,40^A0,50,40^FDCliente: ^FS";
                  etiqueta += "\n^FO650,170^A0,75,45^FD"+nom_cliente.trim()+"^FS";
                  etiqueta += "\n^FO560,40^A0,50,40^FDEndereco: ^FS";
                  etiqueta += "\n^FO550,200^A0,60,40^FD"+end_cliente.trim()+"^FS";
                  etiqueta += "\n^FO460,40^A0,50,40^FDCidade: ^FS";
                  etiqueta += "\n^FO450,170^A0,60,40^FD"+cidade.trim()+"^FS";
                  etiqueta += "\n^FO360,40^A0,50,40^FDNum Lote: ^FS";
                  etiqueta += "\n^FO350,210^A0,68,40^FD"+num_lote_om.trim()+"^FS";
                  etiqueta += "\n^FO260,40^A0,50,40^FDNum OM: ^FS";
                  etiqueta += "\n^FO255,200^A0,68,40^FD"+num_om.trim()+"^FS";
                  etiqueta += "\n^FO160,40^A0,50,40^FDItem: ^FS";
                  etiqueta += "\n^FO150,160^A0,68,40^FD"+den_item.trim()+"^FS";
                  etiqueta += "\n^FO70,40^A0,50,35^FDCor: ^FS";
                  etiqueta += "\n^FO70,140^A0,60,35^FD"+cor.trim()+"^FS";
                  etiqueta += "\n^FO460,510^A0,50,35^FDEstado: ^FS";
                  etiqueta += "\n^FO450,630^A0,60,35^FD"+estado.trim()+"^FS";
                  etiqueta += "\n^XZ";
                }
               GerarArquivo(etiqueta);
            } 

        } catch (SQLException e) {
            System.out.println(e);
        }

            System.out.println("FAILED: failed to close the connection!");

        System.out.println("Done!");
         return conn;
     }

aqui tenho o o metodo dentro da mesma classe etiqueta, o nome dele eh GerarAquivo como vcs podem ver

tudo isso assim como eu ja disse esta dentro da classe “ClasseEtiqueta”…

o que eu preciso: desenvolver uma interface (qe ja esta desenvolvida em um formularioJFrame) com um botao qe ao invés de executar com shift+f6,
simplesmente clico nesse botao e gero o arquivo com as etiquetas, ou seja substituir o shift+f6 pelo click no botao.

E

Ahhh, então você só precisa chamar o getconnection() no actionPerformed (se estiver em outra classe lembre-se de torna o método público):

//Dentro do actionPerformed
(new ClasseEtiqueta()).getConnection();

Qualquer outra dúvida, posta aí.

M

cara mesmo assim ele pede algum parametro pra eu passar dentro do getConnection():

mas nao sei o que colocar, tento colocar String textoEtiqueta que é o mesmo qe to passando como parametro no metodo GerarArquivo, mas nao reconhece…

M

amigo, deu certo…

tenho outra duvida agora…
sera que poderia me dar mais uma maozinha???

E

Claro… Assim que você contar pra gente sua dúvida…

M

no codigo acima, no meu select vc pode perceber qe tem essa linha la:

ja qe tenho o botao de gerar as etiquetas, quero qe ao inves de eu colocr
esse 690 qe esta ai, o usuario irá digitar isso em um jTextField para poder
gerar o arquivo.etq de acordo com o ordem_montag_lote.num_lote_om qe ele quiser
e nao de jeito qe esta ai…

E

Primeiro conselho: se é um número inteiro, não use um text field, use um JSpinner -> http://download.oracle.com/javase/tutorial/uiswing/components/spinner.html

Segundo, acrescente um argumento no seu método getConnection para receber o valor do spinner. Daí, no action event to pega o valor do spinner e joga no argumento receém criado de getConnection. Aí, você faz uma concatenação com o argumento bem onde fica o “690”. Deve funcionar. Se não conseguir, poste o seu código modificado até onde você conseguiu que te ajudaremos.

Criado 27 de janeiro de 2011
Ultima resposta 29 de jan. de 2011
Respostas 10
Participantes 3