Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Koriscenje TableColumnModel

[es] :: Java :: Koriscenje TableColumnModel

[ Pregleda: 2543 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Branko Santo
Tu i tamo

Član broj: 57312
Poruke: 2232
*.dial.InfoSky.Net.

Sajt: cz.linkedin.com/in/branko..


+600 Profil

icon Koriscenje TableColumnModel17.08.2005. u 07:19 - pre 226 meseci
Ljudi,

Ima li ko od vas nekih dobar primer primenjivanja TableColumnModel imam problema na kub nikako to da napravim.

Googlovao sam i sve odande sto sam pokusavao nista mi ne radi :)

Ajd ako neko ima da pokaze primer :)
Tipa da ne mogu da pomeram kolone i da bude setPrefferedWidth() ili kako vec bese :)

Naime sve mi dobro radi sa TableModelom ali ako u constructor dodam i columnModel onda mi se ne pojavljuju tabele.

ovako nekako izgleda

Code:
                       DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
                       tablica = new JTable(tabla, columnModel);
                       
                       JScrollPane scrollPane = new JScrollPane(tablica);
                       panel3.add(scrollPane);



Naravno ide posle toga validate i repaint.

Help please :)

[Ovu poruku je menjao long_strider dana 17.08.2005. u 08:44 GMT+1]
 
Odgovor na temu

sosingus

Član broj: 31461
Poruke: 140
*.grappoloin.com.

Sajt: www.sportin.biz


Profil

icon Re: Koriscenje TableColumnModel17.08.2005. u 15:09 - pre 226 meseci
Nisi dodao/definisao colone u column model pogledaj api
 
Odgovor na temu

Branko Santo
Tu i tamo

Član broj: 57312
Poruke: 2232
*.dial.InfoSky.Net.

Sajt: cz.linkedin.com/in/branko..


+600 Profil

icon Re: Koriscenje TableColumnModel17.08.2005. u 18:10 - pre 226 meseci
Code:
    TableColumnModel cm = new DefaultTableColumnModel( ) {
      
      public void addColumn(TableColumn tc) {
      
         super.addColumn(tc);
      }
    };



Ovako treba column model? Joj pa ni to mi ne radi probao sam cak i da pravim klasu koja extenduje DefaultTableColumnModel ali ni tako nisam uspeo nemam pojma sta je u pitanju.

Da bar znam :(

Pregledao sam api skroz na skroz ovo sa modelim mi je jos sve novo ali ovaj me muci ludacki.
Jednostavno kad i njega implementiram ne funkcionise a bez njega sve cool.
 
Odgovor na temu

sosingus

Član broj: 31461
Poruke: 140
*.grappoloin.com.

Sajt: www.sportin.biz


Profil

icon Re: Koriscenje TableColumnModel18.08.2005. u 13:07 - pre 226 meseci
Pogledaj, ovaj primer
http://www.java2s.com/ExampleC...ablewithacustomcolumnmodel.htm
trebalo bi da ti pomogne :)
 
Odgovor na temu

Branko Santo
Tu i tamo

Član broj: 57312
Poruke: 2232
*.dial.InfoSky.Net.

Sajt: cz.linkedin.com/in/branko..


+600 Profil

icon Re: Koriscenje TableColumnModel18.08.2005. u 15:28 - pre 226 meseci
Sad cu da se bacim na to da proverim :)

Hvala!!!
 
Odgovor na temu

nesja2002
Nebojsa Bogdanovic
Knjazevac

Član broj: 49668
Poruke: 8
*.net
Via: [es] mailing liste



Profil

icon Re: Koriscenje TableColumnModel28.08.2005. u 12:07 - pre 226 meseci
Code:

package nesja.util;

import java.awt.Component;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.Vector;

import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;

public class NsTable extends JTable {
        JDBCAdapter model;
        Statement stmt;
        String[] columnNames;
        public int[] raz={50,200,100};
        
        public NsTable(Statement stu){
                stmt=stu;
                model=new JDBCAdapter(stu);
                Format frm=new Format();
                this.setFont(frm.getFontYU());
                this.setRowHeight(20);          
        }
        
        public NsTable(Statement stu, String[][] vred, String[] hed){
                super(vred, hed);
                columnNames=hed;
                stmt=stu;
                model=new JDBCAdapter(stu);
                Format frm=new Format();
                this.setFont(frm.getFontYU());
                this.setRowHeight(20);
                this.setBounds(0,0,450,300);
        }
        
        public void executeQuery(String str){
                model.executeQuery(str);
                this.setModel(model);
                for (int i = 0; i < raz.length; i++) {
                        this.getColumn(this.getColumnName(i)).setMinWidth(raz[i]);
                }
        this.updateUI();
        }
        
        public String getText(){
                String str="";
                if(this.getSelectedRow()!=-1)   
                        str=String.valueOf(this.getValueAt(this.getSelectedRow(),0));
                else
                        str=String.valueOf(this.getValueAt(0,0));
                return str;
        }
        
        public String[] getRed(){
                int brr=model.columnNames.length;
                String[] str=new String[brr];
                int r=this.getSelectedRow();
                if(r==-1) r=0;
                for (int i = 0; i < str.length; i++) {
                        str[i]=String.valueOf(this.getValueAt(r,i));
                }
                return str;     
        }
}

class JDBCAdapter extends AbstractTableModel {
        Statement           stmt;
        String[]            columnNames = {};
        Vector          rows = new Vector();
        ResultSetMetaData metaData;

        public JDBCAdapter(Statement stu) {
                stmt=stu;
        }

        public void executeQuery(String query) {
                if (stmt == null) {
                        System.err.println("There is no database to execute the query.");
                        return;
                }
                try {
                        ResultSet resultSet = stmt.executeQuery(query);
                        metaData = resultSet.getMetaData();

                        int numberOfColumns =  metaData.getColumnCount();
                        columnNames = new String[numberOfColumns];
                        // Get the column names and cache them.
                        // Then we can close the connection.
                        for(int column = 0; column < numberOfColumns; column++) {
                                columnNames[column] = metaData.getColumnLabel(column+1);
                        }

                        // Get all rows.
                        rows = new Vector();
                        while (resultSet.next()) {
                                Vector newRow = new Vector();
                                for (int i = 1; i <= getColumnCount(); i++) {
                                newRow.addElement(resultSet.getObject(i));
                                }
                                rows.addElement(newRow);
                        }
                        //  close(); Need to copy the metaData, bug in jdbc:odbc driver.
                        fireTableChanged(null); // Tell the listeners a new table has arrived.
                }
                catch (SQLException ex) {
                        System.err.println(ex);
                }
        }

        public void close() throws SQLException {
                System.out.println("Closing db connection");
        }

        protected void finalize() throws Throwable {
                close();
                super.finalize();
        }

        //////////////////////////////////////////////////////////////////////////
        //
        //             Implementation of the TableModel Interface
        //
        //////////////////////////////////////////////////////////////////////////

        // MetaData

        public String getColumnName(int column) {
                if (columnNames[column] != null) {
                        return columnNames[column];
                } else {
                        return "";
                }
        }

        public Class getColumnClass(int column) {
                int type;
                try {
                        type = metaData.getColumnType(column+1);
                }
                catch (SQLException e) {
                        return super.getColumnClass(column);
                }

                switch(type) {
                case Types.CHAR:
                case Types.VARCHAR:
                case Types.LONGVARCHAR:
                        return String.class;

                case Types.BIT:
                        return Boolean.class;

                case Types.TINYINT:
                case Types.SMALLINT:
                case Types.INTEGER:
                        return Integer.class;

                case Types.BIGINT:
                        return Long.class;

                case Types.FLOAT:
                case Types.DOUBLE:
                        return Double.class;

                case Types.DATE:
                        return java.sql.Date.class;

                default:
                        return Object.class;
                }
        }

        public boolean isCellEditable(int row, int column) {
                try {
                        return metaData.isWritable(column+1);
                }
                catch (SQLException e) {
                        return false;
                }
        }

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

        // Data methods

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

        public Object getValueAt(int aRow, int aColumn) {
                Vector row = (Vector)rows.elementAt(aRow);
                return row.elementAt(aColumn);
        }

        public String dbRepresentation(int column, Object value) {
                int type;

                if (value == null) {
                        return "null";
                }

                try {
                        type = metaData.getColumnType(column+1);
                }
                catch (SQLException e) {
                        return value.toString();
                }

                switch(type) {
                case Types.INTEGER:
                case Types.DOUBLE:
                case Types.FLOAT:
                        return value.toString();
                case Types.BIT:
                        return ((Boolean)value).booleanValue() ? "1" : "0";
                case Types.DATE:
                        return value.toString(); // This will need some conversion.
                default:
                        return """+value.toString()+""";
                }

        }

        public void setValueAt(Object value, int row, int column) {
                try {
                        String tableName = metaData.getTableName(column+1);
                        // Some of the drivers seem buggy, tableName should not be null.
                        if (tableName == null) {
                                System.out.println("Table name returned null.");
                        }
                        String columnName = getColumnName(column);
                        String query                                 "update "+tableName+
                                " set "+columnName+" = "+dbRepresentation(column, value)+
                                " where ";
                        // We don't have a model of the schema so we don't know the
                        // primary keys or which columns to lock on. To demonstrate
                        // that editing is possible, we'll just lock on everything.
                        for(int col = 0; col<getColumnCount(); col++) {
                                String colName = getColumnName(col);
                                if (colName.equals("")) {
                                        continue;
                                }
                                if (col != 0) {
                                        query = query + " and ";
                                }
                                query = query + colName +" = "+
                                        dbRepresentation(col, getValueAt(row, col));
                        }
//                      System.out.println(query);
//                      System.out.println("Not sending update to database");
                        // statement.executeQuery(query);
                }
                catch (SQLException e) {
                        //     e.printStackTrace();
                        System.err.println("Update failed");
                }
                Vector dataRow = (Vector)rows.elementAt(row);
                dataRow.setElementAt(value, column);

                }public void tableChanged(TableModelEvent e) {
                        fireTableChanged(e);
                }

        }

    
    class MojPrikazivac extends JCheckBox implements TableCellRenderer{
        MojPrikazivac(){
            setOpaque(true);
        }
            /**
         * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
         */
        public Component getTableCellRendererComponent(JTable tablea,Object vrednost,boolean isOdabran,boolean imaFokus,int redova,int kolona) {
            return this;
        }
}



--
Best regards,
Nebojsa mailto:[email protected]
 
Odgovor na temu

[es] :: Java :: Koriscenje TableColumnModel

[ Pregleda: 2543 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.