JTABLE+Coluna+Time

7 respostas
F

Boa tarde a todos.

Estou trabalhando no Netbens e tenho uma Jtable que foi gerado por ele mesmo a partir do banco de dados.

Neste Banco de Dados tenho três campo que são do tipo Time, porém na columa da Jtable ele me da no formato Date com o valor 01/01/1970 para qualquer horario contido no banco.

No proprio netbeans posso clicar com o direito na tabela ir em conteudo da tabela, la encontro os campos.

Ja tentei alterar as colunas para o tipo java.util.Date, java.sql.Time e sempre esta mesma data é mostrada.

Alguem ja passou por algo assim? Alguem posso me ajudar?

Desde já agradeço.

Grato.

7 Respostas

J

flaviorgiron,

Como você popula sua tabela? você utiliza um TableModel? através do TableModel ou de um TableCellRenderer você pode formatar o valor que você deseja para cada célula.

Aqui no fórum você encontra informações sobre como fazer isso. Faça uma pesquisa sobre TableModel e TableCellRenderer.

Abraço,

F

joaomiguel:
flaviorgiron,

Como você popula sua tabela? você utiliza um TableModel? através do TableModel ou de um TableCellRenderer você pode formatar o valor que você deseja para cada célula.

Aqui no fórum você encontra informações sobre como fazer isso. Faça uma pesquisa sobre TableModel e TableCellRenderer.

Abraço,

Olá joaomiguel.
No caso, o que o proprio netbens me gera. é isto.Acredito não ser uma TableModel.Porém to mandando alguns códigos para que possa ajudar a me ajudar.

Grato

jtbMedicos = new javax.swing.JTable();

        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${inicioAtendimento}"));
        columnBinding.setColumnName("Inicio Atendimento");
        columnBinding.setColumnClass(java.util.Date.class);

No caso ja troquei o campo para java.sql.Time e tambpém ainda não resolveu…

Grato.

J

Opa,

eu não uso netbeans só para desenhar as telas, o resto prefiro fazer a mão, para evitar excesso de código e entender o que estou fazendo. Não conheço como o netbeans faz isso.

Eu faria meu prórprio TableModel e meu Próprio TableCellRenderer, e atribuiria a tabela… São duas classes extremamente simples. Se quiser fazer dessa maneira dê uma olhada no DefaulTableModel que é um exemplo de um TableModel. Porém você terá que popular os dados na mão.

Mas voltando ao problema, os dados estão corretamente populados no banco? qual banco você utiliza? qual tipo do dado você utiliza para DATE?

abraço.

F

joaomiguel:
Opa,

eu não uso netbeans só para desenhar as telas, o resto prefiro fazer a mão, para evitar excesso de código e entender o que estou fazendo. Não conheço como o netbeans faz isso.

Eu faria meu prórprio TableModel e meu Próprio TableCellRenderer, e atribuiria a tabela… São duas classes extremamente simples. Se quiser fazer dessa maneira dê uma olhada no DefaulTableModel que é um exemplo de um TableModel. Porém você terá que popular os dados na mão.

Mas voltando ao problema, os dados estão corretamente populados no banco? qual banco você utiliza? qual tipo do dado você utiliza para DATE?

abraço.

Olá joaomiguel, o problema quanto a mostrar o valor como time, acabo de acertar aki, resolvi com um renderer,
Mas por curiosidade, os dados estavam sendo armazenado no banco de forma correta, o somente a visualização estava incorreta.
Utilizo o FireBird.

Olha ai.

package as.com.sisclinica.renderer;

import java.awt.Component;
import java.text.DateFormat;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;

public class DateCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer {

    private DateFormat formatter;

    public DateCellRenderer() {
        super();
        this.formatter = DateFormat.getTimeInstance();
    }

    @Override
    public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected,
            final boolean hasFocus, final int row, final int column) {

        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        if ((value != "")||(value !=null)) {
            setText(this.formatter.format(value));
        } else {
            setText("");
        }
        return c;
    }
}
R

Olá amigos!

estou com um problema igual ao do amigo flaviorgiron, não estou conseguindo converter na jtable para mostrar o formato correto da hora, joguei o render do amigo e até ai apareceu a data certinha na jtabel, mas quando clico no botão novo para inserir novos dados ele me dá um erro dizendo alguma coisa sobre a text data format e não abre na jtable um novo campo para digitar.

fiz o codigo do renderer igual ao do amigo flaviorgiron

package willian.siscor.renderer;

import java.awt.Component;

import java.text.DateFormat;

import javax.swing.JTable;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.TableCellRenderer;

public class TimeListCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer {

private DateFormat formatter;

 public TimeListCellRenderer() {
    super();
     this.formatter = DateFormat.getTimeInstance();
 }

 @Override
 public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected,
         final boolean hasFocus, final int row, final int column) {

     Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     if ((value != "")||(value !=null)) {
         setText(this.formatter.format(value));

    } else {
         //setText("");
     }
     return c;

     

 }

}

mas me retorna o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: Cannot format given Object as a Date

at java.text.DateFormat.format(DateFormat.java:281)

at java.text.Format.format(Format.java:140)

at willian.siscor.renderer.TimeListCellRenderer.getTableCellRendererComponent(TimeListCellRenderer.java:24)

at javax.swing.JTable.prepareRenderer(JTable.java:5729)

at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2075)

at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1977)

at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1773)

at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)

at javax.swing.JComponent.paintComponent(JComponent.java:763)

at javax.swing.JComponent.paint(JComponent.java:1027)

at javax.swing.JComponent.paintChildren(JComponent.java:864)

at javax.swing.JComponent.paint(JComponent.java:1036)

at javax.swing.JViewport.paint(JViewport.java:747)

at javax.swing.JComponent.paintChildren(JComponent.java:864)

at javax.swing.JComponent.paint(JComponent.java:1036)

at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)

at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1472)

at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1403)

at javax.swing.RepaintManager.paint(RepaintManager.java:1217)

at javax.swing.JComponent._paintImmediately(JComponent.java:5070)

at javax.swing.JComponent.paintImmediately(JComponent.java:4880)

at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)

at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)

at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)

at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

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)

como disse com o código do amigo a hora aparece certinho, pois no meu campo time da tabela deixei 00:00:00 e no meu jformattedTextfield coloquei a formatação HH:mm:ss ai funcionou, mas quando tento inserir novos dados da este erro acima.

se alguem puder me ajudar fico muito grato, pois estou fazendo um aplicativo simples para controle de ligação telefonica onde tenho os campos nº tel, tempo de ligação, uf para onde foi feita a ligação e o valor da ligação isso tudo a pessoa vai ter que digitar no aplicativo para saber para quais numeros foram gastos.

um abraço e espero que me ajudem.

J

Olá ribeiro3001,

Pelo que entendi, o seu formulário possui alguns componentes de texto onde o usuário irá preenche-los e em seguida adicionar estes valores à sua JTable. Certo?

Geralmente eu utilizo renderer quando quero desenhar algo, ou incluir algum componente dentro de uma célula. Quando vou exibir somente texto eu não crio renderer. Utilizo diretamente o TableModel.

Você pode implementar seu TableModel implementando a interface TableModel.

o método: getValueAt(int rowIndex, int columnIndex) irá retornar à sua JTable o valor para ser exibido, através dele você pode formatar o valor desejado e retornar como uma String. http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/table/TableModel.html

um exemplo como você pode fazer isso…

No seu TableModel coloque uma lista para armazenar seus objetos e uma lista para armazenar as colunas da sua JTable.

Vamos supor que você tenha o objeto chamada… que tenha os atributos: id, telefoneDiscado, tempo, UF
No seu table model você terá uma lista de chamada

Sua lista de colunas na seguinte ordem: | Telefone | Tempo | UF

No método getValueAt(int row, int col):

public Object getValueAt(int row, int column){
Chamada chamada = getDataAt(row); // irá retornar a ligação da sua lista de ligações.

switch(column){
case 0: // Coluna zero, onde é mostrado o número do telefone.
  return chamada.getTelefone();

case 1: // Coluna um, onde é mostrado o tempo de ligação
 return chamada.getTempo(); // ou utilize a chamada de um método para retornar a string com o tempo formatado.

case 2: // Coluna dois, onde é mostardo a unidade federativa
 return chamada.getUf();
}
}

private Chamada getDataAt(int index){
return listaChamadas.get(index); //retorna a chamada de acordo com o índice passado.
}

Agora para você incluir chamadas à sua tabela, basta que você crie um método na sua TableModel para incluir chamadas no ArrayList de chamadas. Nos métodos que incluem e que alteram valores do seu table model você deve incluir a chamada dos métodos para notificar mudança ou inclusão de dados na tabela.
Por exemlpo, seu método que inclui uma ligação no modelo…

public void addData(Chamada chamada){
 listaChamadas.add(chamada);
fireTableRowsInserted(int firstRow, int lastRow); //Chame este método para notificar aos listeners que houve inclusão de dados.
}

Dê uma olhada também em: http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/table/AbstractTableModel.html

Não sei se consegui exemplificar, qualquer coisa posta aí…

abraço,

João Miguel

R

Olá amigo João Miguel!

Obrigado por me ajudar, gostaria de saber qual a maneira mais correta para mudar na jtable uma coluna onde aparece o tempo da ligação, no meu banco de dados está marcado como time .

Fiz o seguinte no Netbeans construi um formulário mestre detalhes , onde ele gerou automaticamente todo o codigo para mim, deixando minha inferface desta maneira

uma tabela com o id, telefone, tempo ligação, uf e valor unitário, e criei outros campos para que o usuario digita-se as informações referentes ao telefone usado etc.

o meu problema é que quando executo a tela das ligações nos campos para o usuario digitar está tudo certo, mas na tabela Jtable no campo do tempo das ligações ele me mostar uma data 1/1/1970, mas grava a hora digitada corretamente no banco. Tanto no banco como no campo que o usuario digita estão corretamente mostrados só na jtable que ele me mostra (1/01/1970)erradamente.

O amigo flaviorgiron resolveu com um renderer este erro de visualização, eu usei o mesmo renderer que ele mostrou neste tópico e funcionou tambem, mostrando corretamente os dados na tabela(jtable) no campo tempo de ligação.Mas usando este renderer percebi que se o usuario for inserir um novo numero fazer novo cadastro ele não consegue pois não aparece uma nova linha para digitar e o aplicativo trava mostrando os erros citados acima.

Meu código gerado pelo Netbeans está assim:

package correge.siscor.view;

import java.awt.EventQueue;

import java.beans.Beans;

import java.util.ArrayList;

import java.util.List;

import javax.persistence.RollbackException;

import javax.swing.JFrame;

import javax.swing.JPanel;

/**
*

  • @author willian
    */
    public class LigacaosTelefonicasView extends JPanel {

    public LigacaosTelefonicasView() {
    
    initComponents();
    
    if (!Beans.isDesignTime()) {
    
    entityManager.getTransaction().begin();
    
    }
    
    }
    

    /** 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() {
      
      bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
      
      entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory(“siscorjavaPU”).createEntityManager();
      
      query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery(“SELECT l FROM LicacaoTelefone l”);
      
      list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
      
      rowSorterToStringConverter1 = new willian.siscor.converter.RowSorterToStringConverter();
      
      jPanel1 = new javax.swing.JPanel();
      
      jLabel1 = new javax.swing.JLabel();
      
      jTextField1 = new javax.swing.JTextField();
      
      jPanel2 = new javax.swing.JPanel();
      
      masterScrollPane = new javax.swing.JScrollPane();
      
      masterTable = new javax.swing.JTable();
      
      jPanel3 = new javax.swing.JPanel();
      
      vlrTotalLigacaoLabel = new javax.swing.JLabel();
      
      numTelefoneLabel = new javax.swing.JLabel();
      
      tempoLigacaoLabel = new javax.swing.JLabel();
      
      ufLigacaoLabel = new javax.swing.JLabel();
      
      ufLigacaoField = new javax.swing.JTextField();
      
      vlrTotalLigacaoField = new javax.swing.JTextField();
      
      jFormattedTextField1 = new javax.swing.JFormattedTextField();
      
      jFormattedTextField2 = new javax.swing.JFormattedTextField();
      
      jPanel4 = new javax.swing.JPanel();
      
      saveButton = new javax.swing.JButton();
      
      refreshButton = new javax.swing.JButton();
      
      newButton = new javax.swing.JButton();
      
      deleteButton = new javax.swing.JButton();
      
      jPanel5 = new javax.swing.JPanel();
      
      jLabel2 = new javax.swing.JLabel();
      

      FormListener formListener = new FormListener();

      setBackground(new java.awt.Color(102, 102, 102));

      jPanel1.setBackground(new java.awt.Color(153, 153, 153));

      jLabel1.setText(“Localizar:”);

      org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${rowSorter}"), jTextField1, org.jdesktop.beansbinding.BeanProperty.create(“text_ON_ACTION_OR_FOCUS_LOST”));
      
      binding.setConverter(rowSorterToStringConverter1);
      
      bindingGroup.addBinding(binding);
      
      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      
      jPanel1.setLayout(jPanel1Layout);
      
      jPanel1Layout.setHorizontalGroup(
      
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel1Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel1)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 633, Short.MAX_VALUE)
      
      .addContainerGap())
      
      );
      
      jPanel1Layout.setVerticalGroup(
      
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel1Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel1)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addContainerGap(15, Short.MAX_VALUE))
      
      );
      

      jPanel2.setBackground(new java.awt.Color(153, 153, 153));

      org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, masterTable);
      
      org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${numTelefone}"));
      
      columnBinding.setColumnName(“Número  Telefone”);
      
      columnBinding.setColumnClass(String.class);
      
      columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${tempoLigacao}"));
      
      columnBinding.setColumnName(“Tempo Ligação”);
      
      columnBinding.setColumnClass(java.util.Date.class);
      
      columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${ufLigacao}"));
      
      columnBinding.setColumnName(“UF”);
      
      columnBinding.setColumnClass(String.class);
      
      columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${vlrTotalLigacao}"));
      
      columnBinding.setColumnName(“Valor  Ligação”);
      
      columnBinding.setColumnClass(Double.class);
      
      bindingGroup.addBinding(jTableBinding);
      
      jTableBinding.bind();
      
      masterScrollPane.setViewportView(masterTable);
      
      masterTable.getColumnModel().getColumn(0).setPreferredWidth(150);
      
      masterTable.getColumnModel().getColumn(1).setPreferredWidth(150);
      
      masterTable.getColumnModel().getColumn(1).setCellRenderer(null);
      
      masterTable.getColumnModel().getColumn(2).setPreferredWidth(100);
      
      masterTable.getColumnModel().getColumn(3).setPreferredWidth(150);
      
      javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
      
      jPanel2.setLayout(jPanel2Layout);
      
      jPanel2Layout.setHorizontalGroup(
      
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 682, Short.MAX_VALUE)
      
      .addContainerGap())
      
      );
      
      jPanel2Layout.setVerticalGroup(
      
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(masterScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE)
      
      .addContainerGap())
      
      );
      

      jPanel3.setBackground(new java.awt.Color(153, 153, 153));

      vlrTotalLigacaoLabel.setText(“Valor Ligação:”);

      numTelefoneLabel.setText(“Número Telefone:”);

      tempoLigacaoLabel.setText(“Duração Ligação:”);

      ufLigacaoLabel.setText(“UF :”);

      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.ufLigacao}"), ufLigacaoField, org.jdesktop.beansbinding.BeanProperty.create(“text”));
      
      binding.setSourceUnreadableValue(null);
      
      bindingGroup.addBinding(binding);
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), ufLigacaoField, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      
      bindingGroup.addBinding(binding);
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.vlrTotalLigacao}"), vlrTotalLigacaoField, org.jdesktop.beansbinding.BeanProperty.create(“text”));
      
      bindingGroup.addBinding(binding);
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), vlrTotalLigacaoField, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      
      bindingGroup.addBinding(binding);
      
      try {
      
      jFormattedTextField1.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("(###)-####-####")));
      
      } catch (java.text.ParseException ex) {
      
      ex.printStackTrace();
      
      }
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.numTelefone}"), jFormattedTextField1, org.jdesktop.beansbinding.BeanProperty.create(“value”));
      
      bindingGroup.addBinding(binding);
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), jFormattedTextField1, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      
      bindingGroup.addBinding(binding);
      

      jFormattedTextField2.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(java.text.DateFormat.getTimeInstance())));

      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.tempoLigacao}"), jFormattedTextField2, org.jdesktop.beansbinding.BeanProperty.create(“value”));
      
      bindingGroup.addBinding(binding);
      
      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), jFormattedTextField2, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      
      bindingGroup.addBinding(binding);
      
      javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
      
      jPanel3.setLayout(jPanel3Layout);
      
      jPanel3Layout.setHorizontalGroup(
      
      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel3Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(numTelefoneLabel)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jFormattedTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(ufLigacaoLabel)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(ufLigacaoField, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(tempoLigacaoLabel)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jFormattedTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(vlrTotalLigacaoLabel)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(vlrTotalLigacaoField, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(28, Short.MAX_VALUE))
      
      );
      
      jPanel3Layout.setVerticalGroup(
      
      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel3Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(numTelefoneLabel)
      
      .addComponent(ufLigacaoLabel)
      
      .addComponent(ufLigacaoField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(tempoLigacaoLabel)
      
      .addComponent(jFormattedTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(vlrTotalLigacaoLabel)
      
      .addComponent(vlrTotalLigacaoField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jFormattedTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addContainerGap())
      
      );
      

      jPanel4.setBackground(new java.awt.Color(153, 153, 153));

      saveButton.setText(“Save”);
      saveButton.addActionListener(formListener);

      refreshButton.setText(“Refresh”);
      refreshButton.addActionListener(formListener);

      newButton.setText(“New”);
      newButton.addActionListener(formListener);

      deleteButton.setText(“Delete”);

      binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), deleteButton, org.jdesktop.beansbinding.BeanProperty.create(“enabled”));
      bindingGroup.addBinding(binding);

      deleteButton.addActionListener(formListener);

      javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
      
      jPanel4.setLayout(jPanel4Layout);
      
      jPanel4Layout.setHorizontalGroup(
      
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(newButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(deleteButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(refreshButton)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(saveButton)
      
      .addContainerGap(10, Short.MAX_VALUE))
      
      );
      

      jPanel4Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deleteButton, newButton, refreshButton, saveButton});

      jPanel4Layout.setVerticalGroup(
      
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(saveButton)
      
      .addComponent(refreshButton)
      
      .addComponent(deleteButton)
      
      .addComponent(newButton))
      
      .addContainerGap())
      
      );
      

      jPanel5.setBackground(new java.awt.Color(255, 204, 204));

      jLabel2.setFont(new java.awt.Font(Arial Black, 0, 24));
      
      jLabel2.setForeground(new java.awt.Color(204, 0, 0));
      
      jLabel2.setText(CONTROLE DAS LIGAÇÕES TELEFONICAS);
      
      javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
      
      jPanel5.setLayout(jPanel5Layout);
      
      jPanel5Layout.setHorizontalGroup(
      
      jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
      
      .addContainerGap(103, Short.MAX_VALUE)
      
      .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 589, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap())
      
      );
      
      jPanel5Layout.setVerticalGroup(
      
      jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel5Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel2)
      
      .addContainerGap(12, Short.MAX_VALUE))
      
      );
      
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
      
      this.setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      
      .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jPanel5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(126, 126, 126)
      
      .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
      
      .addContainerGap())
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(19, 19, 19)
      
      .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap())
      
      );
      

      bindingGroup.bind();
      }

    // Code for dispatching events from components to event handlers.

    private class FormListener implements java.awt.event.ActionListener {
    
    FormListener() {}
    
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    
    if (evt.getSource() == saveButton) {
    
    LigacaosTelefonicasView.this.saveButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == refreshButton) {
    
    LigacaosTelefonicasView.this.refreshButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == newButton) {
    
    LigacaosTelefonicasView.this.newButtonActionPerformed(evt);
    
    }
    
    else if (evt.getSource() == deleteButton) {
    
    LigacaosTelefonicasView.this.deleteButtonActionPerformed(evt);
    
    }
    
    }
    
    }//
    
    @SuppressWarnings(unchecked)
    
    private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    entityManager.getTransaction().rollback();
    
    entityManager.getTransaction().begin();
    
    java.util.Collection data = query.getResultList();
    
    for (Object entity : data) {
    
    entityManager.refresh(entity);
    
    }
    
    list.clear();
    
    list.addAll(data);
    
    }
    
    private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    int[] selected = masterTable.getSelectedRows();
    
    List<correge.siscor.bean.LicacaoTelefone> toRemove = new ArrayList<correge.siscor.bean.LicacaoTelefone>(selected.length);
    
    for (int idx = 0; idx < selected.length; idx++) {
    
    correge.siscor.bean.LicacaoTelefone l = list.get(masterTable.convertRowIndexToModel(selected[idx]));
    
    toRemove.add(l);
    
    entityManager.remove(l);
    
    }
    
    list.removeAll(toRemove);
    
    }
    

    private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {

    correge.siscor.bean.LicacaoTelefone l = new correge.siscor.bean.LicacaoTelefone();
     entityManager.persist(l);
     list.add(l);
     int row = list.size() - 1;
     masterTable.setRowSelectionInterval(row, row);
     masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
    

    }

    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
    
    try {
    
    entityManager.getTransaction().commit();
    
    entityManager.getTransaction().begin();
    
    } catch (RollbackException rex) {
    
    rex.printStackTrace();
    
    entityManager.getTransaction().begin();
    
    List<correge.siscor.bean.LicacaoTelefone> merged = new ArrayList<correge.siscor.bean.LicacaoTelefone>(list.size());
    
    for (correge.siscor.bean.LicacaoTelefone l : list) {
    
    merged.add(entityManager.merge(l));
    
    }
    
    list.clear();
    
    list.addAll(merged);
    
    }
    
    }
    
    // Variables declaration - do not modify
    
    private javax.swing.JButton deleteButton;
    
    private javax.persistence.EntityManager entityManager;
    
    private javax.swing.JFormattedTextField jFormattedTextField1;
    
    private javax.swing.JFormattedTextField jFormattedTextField2;
    
    private javax.swing.JLabel jLabel1;
    
    private javax.swing.JLabel jLabel2;
    
    private javax.swing.JPanel jPanel1;
    
    private javax.swing.JPanel jPanel2;
    
    private javax.swing.JPanel jPanel3;
    
    private javax.swing.JPanel jPanel4;
    
    private javax.swing.JPanel jPanel5;
    
    private javax.swing.JTextField jTextField1;
    
    private java.util.List<correge.siscor.bean.LicacaoTelefone> list;
    
    private javax.swing.JScrollPane masterScrollPane;
    
    private javax.swing.JTable masterTable;
    
    private javax.swing.JButton newButton;
    
    private javax.swing.JLabel numTelefoneLabel;
    
    private javax.persistence.Query query;
    
    private javax.swing.JButton refreshButton;
    
    private willian.siscor.converter.RowSorterToStringConverter rowSorterToStringConverter1;
    
    private javax.swing.JButton saveButton;
    
    private javax.swing.JLabel tempoLigacaoLabel;
    
    private javax.swing.JTextField ufLigacaoField;
    
    private javax.swing.JLabel ufLigacaoLabel;
    
    private javax.swing.JTextField vlrTotalLigacaoField;
    
    private javax.swing.JLabel vlrTotalLigacaoLabel;
    
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    
    // End of variables declaration
    

    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

    public void run() {
             JFrame frame = new JFrame();
             frame.setContentPane(new LigacaosTelefonicasView());
             frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
             frame.pack();
             frame.setVisible(true);
         //frame.setTitle(args[0]);
         }
     });
    

    }
    }

gostaria de saber como criar um renderer para exibição da hora corretamente pois eu acho que o renderer do amigo flaviorgiron está causando algum conflito com o codigo do meu aplicativo.

Desculpe ao tamanho do texto, mas sou novato no java e netbeans e não estou conseguindo resolver este detalhe
e muito obrigado por responder.

Espero que me ajude a resolver este detalhe

Um abraço e até mais.

Criado 23 de março de 2009
Ultima resposta 18 de set. de 2010
Respostas 7
Participantes 3