Exemplo de JTable Com DaxComponents

A biblioteca DAXComponets veio pra ajudar os desenvolvedores para desenvolver rapidamente aplicações rápida e com um alto poder de divisão de responsabilidades.

Esta Biblioteca visa minimar o uso de repetidas funcionalidades que são necessarias para o desenvolvimento de um sistema desenvolvido em J2SE.

Logo apos será desenvolvido um blog com o intuito de auxiliar aos interessados neste projeto.

Tabela com DAXComponents

Espero que ajude…

Deixe um comentário

Customizando uma JTable

Muitos desenvolvedores se deparam com dificuldades sobre o uso de uma JTable

O codigo abaixo trata de uma forma simplificada e de facil entendimento a utilização de uma JTable e seus diferentes “agentes”. Vai desde sua arquitetura a um exemplo mais pratico…

import java.awt.Component;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultCellEditor;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.text.NumberFormatter;

public class TesteTabela extends javax.swing.JFrame {

    public TesteTabela() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("Carregar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        jButton2.setText("Listar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addGap(17, 17, 17))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(24, 24, 24)
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton2))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        List<Widget> list = new ArrayList<Widget>();
        list.add(new Widget("Job", 23.6, "Serra Grande 9", 245));
        list.add(new Widget("Job 2", 23.6, "Serra Grande 2", 425));
        list.add(new Widget("Job 3", 23.5, "Serra Grande 4", 245));
        list.add(new Widget("Job 4", 23.3, "Serra Grande ", 255));
        list.add(new Widget("Job 5", 23.1, "Serra Grande", 25));

        MyTableModel mtm = new MyTableModel(list);
        jTable1.setModel(mtm);
        NumberFormat _format = NumberFormat.getCurrencyInstance();
        MyCurrencyRenderer _renderer = new MyCurrencyRenderer(_format);
        TableColumnModel _model = jTable1.getColumnModel();
        TableColumn _column = _model.getColumn(1);
        _column.setCellRenderer(_renderer);

        NumberFormatter _formatter = new NumberFormatter(_format);
        JFormattedTextField _field = new JFormattedTextField(_formatter);
        CurrencyCellEditor _editor = new CurrencyCellEditor(_field, _format);
        _column.setCellEditor(_editor);

    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        MyTableModel mt = (MyTableModel) jTable1.getModel();
        System.out.println("...........................");
        for (Widget widget : mt.getAll()) {
            System.out.print("Nome : " + widget.getName());
            System.out.print("\tLocalização : " + widget.getLocation());
            System.out.print("\tQuantidade : " + widget.getQuantity());
            System.out.print("\tValue : " + widget.getValue());
            System.out.println("...........................");
        }
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new TesteTabela().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration

    class MyTableModel extends AbstractTableModel {

        private ArrayList<Widget> datalist = new ArrayList<Widget>();
        private String[] columns = {"Name", "Value",
            "Location", "Quantity"};

        public Widget getWidgetAt(int row) {
            return (Widget) datalist.get(row);
        }

        public Widget removeWidgetAt(int row) {
            return (Widget) datalist.remove(row);
        }

        public void addWidget(Widget w) {
            datalist.add(w);
            fireTableDataChanged();
        }

        public void addWidgetList(List l) {
            datalist.addAll(l);
            fireTableDataChanged();
        }

        public MyTableModel(List l) {
            datalist.addAll(l);
        }

        public MyTableModel() {
        }

        public int getRowCount() {
            return datalist.size();
        }

        @Override
        public String getColumnName(int i) {
            return columns[i];
        }

        public int getColumnCount() {
            return columns.length;
        }

        public List<Widget> getAll() {
            return datalist;
        }

        @Override
        public boolean isCellEditable(int row, int col) {
            switch (col) {
                case 0: //Name
                    return false;
                case 1: //value
                    return true;
                case 2: //location
                    return true;
                case 3: //quantity
                    return true;
                default:
                    return false;
            }
        }

        @Override
        public Class getColumnClass(int col) {
            switch (col) {
                case 0: //Name
                    return String.class;
                case 1: //value
                    return Double.class;
                case 2: //location
                    return String.class;
                case 3: //quantity
                    return Integer.class;
                default:
                    return null;
            }
        }

        @Override
        public void setValueAt(Object value, int row, int col) {
            Widget w = (Widget) datalist.get(row);
            switch (col) {
                case 0: //Name
                    w.setName(value.toString());
                    break;
                case 1: //value
                    Double _value = (Double) value;
                    w.setValue(_value.doubleValue());
                    break;
                case 2: //location
                    w.setLocation(value.toString());
                    break;
                case 3: //quantity
                    Integer _quantity = (Integer) value;
                    w.setQuantity(_quantity.intValue());
                    break;
            }
        }

        public Object getValueAt(int row, int col) {
            Widget widget = (Widget) datalist.get(row);
            switch (col) {
                case 0:
                    return widget.getName();
                case 1:
                    return new Double(widget.getValue());
                case 2:
                    return widget.getLocation();
                case 3:
                    return new Integer(widget.getQuantity());
                default:
                    return null;
            }
        }
    }

    class Widget {

        private String name;
        private Double value;
        private String localition;
        private Integer quantity;

        public Widget() {
        }

        public Widget(String name, Double value, String localition, Integer quantity) {
            this.name = name;
            this.value = value;
            this.localition = localition;
            this.quantity = quantity;
        }

        public String getLocation() {
            return localition;
        }

        public void setLocation(String localition) {
            this.localition = localition;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getQuantity() {
            return quantity;
        }

        public void setQuantity(Integer quantity) {
            this.quantity = quantity;
        }

        public Double getValue() {
            return value;
        }

        public void setValue(Double value) {
            this.value = value;
        }
    }

    class MyCurrencyRenderer extends DefaultTableCellRenderer {

        NumberFormat currencyFormat;

        public MyCurrencyRenderer(NumberFormat cf) {
            currencyFormat = cf;
        }

        public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus,
                int row, int col) {
            String _formattedValue;
            Double _value = (Double) value;
            if (value == null) {
                _formattedValue = "Not Set";
            } else {
                _formattedValue = currencyFormat.format(_value);
            }
            JLabel testLabel = new JLabel(_formattedValue,
                    SwingConstants.RIGHT);
            if (isSelected) {
                testLabel.setBackground(table.getSelectionBackground());
                testLabel.setOpaque(true);
                testLabel.setForeground(table.getSelectionForeground());
            }
            if (hasFocus) {
                testLabel.setForeground(table.getSelectionBackground());
                testLabel.setBackground(table.getSelectionForeground());
                testLabel.setOpaque(true);
            }
            return testLabel;
        }
    }

    class CurrencyCellEditor extends DefaultCellEditor {

        private NumberFormat currencyFormat;

        public CurrencyCellEditor(final JFormattedTextField tf, NumberFormat nf) {
            super(tf);
            currencyFormat = nf;
            tf.setFocusLostBehavior(JFormattedTextField.COMMIT);
            tf.setHorizontalAlignment(SwingConstants.RIGHT);
            tf.setBorder(null);

            delegate = new EditorDelegate() {

                @Override
                public void setValue(Object param) {

                    Double _value = (Double) param;

                    if (_value == null) {
                        tf.setValue(currencyFormat.format(0.0));
                    } else {
                        double _d = _value.doubleValue();
                        String _format = currencyFormat.format(_d);
                        // System.out.println("Formatado : "+_format+" d: "+_d);
                        tf.setValue(_d);
                    }
                }

                @Override
                public Object getCellEditorValue() {
                    try {
                        String _field = tf.getText();
                        Number _number = currencyFormat.parse(_field);
                        double _parsed = _number.doubleValue();
                        Double d = new Double(_parsed);
                        return d;
                    } catch (ParseException e) {
                        e.printStackTrace();
                        return new Double(0.0);
                    }
                }
            };
        }
    }
}

Espero que ajude     Fonte


													

Deixe um comentário

Customizando a aparencia do Netbeans

Para as pessoas que desejam customizar a aparencia do seu Netbeans 6.5, que já esteja utilizando o JDK 6 update 10 pode fazê-lo da seguinte maneira.Utilizando o Nimbus

1. Vá ao diretorio onde foi instalado o Netbeans

2. Vá ao arquivos :  Netbeans 6.5/etc/netbeans.conf

3. Acrescente a este na linha que começa com netbeans_default_options=”…[Aqui tem os demais parametros]…  –laf com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel”

4. –laf com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel, este comando deve está entre as aspas como no identificado no item acima.

Deixe um comentário

Bem vindos !

Sejam bem vindos ao blog que busca uma maior interação entre desenvolvedores e as melhores praticas de desenvolvimento OO

Deixe um comentário

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.