Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача внешнего параметра в коструктор класса 
:(
    Опции темы
Valor
  Дата 21.1.2009, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Есть некий класс
к примеру test
Код


class test {

int A; // поле класса каторое надо передать в конструктор
//и его коструктор
public test(){
.......
//какието действия со значением перменоой А
.....
}

//значение переменной передается из вне с помощью метода setA(int external_A)

public setA(int external_A){
       this.A = external_A;
}

}



в метод setA() значение из вне приходит, т.е. А в методе принемает необходимое значение.. Но вот если обратится к полю А из конструктора, то А остается 0...

Чую, что я гдето сильно облажался.. но немогу понять где? :(
PM MAIL   Вверх
Grig
Дата 21.1.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Код

class test {
int A; 

public test(int external_A){
       this.A = external_A;
}
}

test T=new test(25);



--------------------
        
PM MAIL ICQ   Вверх
Valor
Дата 21.1.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Можно по подробнее?.. Что-то я не сильно уловил суть Вашего примера.

Для наглядности предоставлю рельный класс.

Код

MessageBox msbx = new MessageBox();
    Connection conn = null;
    Statement st = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    ResultSetMetaData rsmd = null;
    String TableName;
    int CollCount = 0;
    String dbCellNames[]; //name cel from data base
    Vector Alldata_row = new Vector();
    Vector Alldata_cell = new Vector();
    Vector row;

    int ID; 

  
// сопстно метод каторый получет значение ID из вне..
    public void setSelectValue(int ID_value){
        this.WhereID = ID_value;
    }

    @SuppressWarnings({"unchecked", "unchecked"})
    public Nedopostavka_TK_TM() {
        try{
        
        Vector newData;
        conn = MySQLFactory.getConnection();
        st = (Statement) conn.createStatement();
        rs = st.executeQuery("SELECT `nedopostavka_tk`.`id_netdopost`,`nedopostavka_tk`.`sum`,`nedopostavka_tk`.`data_pritenzi`," +
                "`nedopostavka_tk`.`dppkr`,`nedopostavka_tk`.`summa_compinsaci`,`nedopostavka_tk`.`date_compinsaci`" +
                " FROM `nedopostavka_tk` Inner Join `otgruzka` ON `otgruzka`.`id_odgruzka` = `nedopostavka_tk`.`id_doc`" +
                " WHERE `nedopostavka_tk`.`id_doc` = '" + ID + "'"); // Переменная ID должна стать критерием выборки из таблицы
        System.out.println("Debug : ID = " + ID);
        rsmd = (ResultSetMetaData) rs.getMetaData();
        TableName = rsmd.getTableName(1);
        CollCount = rsmd.getColumnCount();
        dbCellNames = new String[CollCount];
        System.out.println(CollCount);
        for (int x = 0; x < CollCount; x ++){
            dbCellNames[x] = TableHeaderName[x];// rsmd.getColumnName( x +1);
        }
            while(rs.next()){
                newData = new Vector();
                for(int q = 1; q <= CollCount; q ++){
                    newData.addElement(rs.getString(q));
                }
                Alldata_row.addElement(newData);
            }
        }catch(Exception ex){
            msbx.showErrrorMessage(ex.getMessage(), "Error!");
        }finally{
            try{
                rs.close();
                st.close();
                conn.close();
            }catch(Exception ex){
                System.out.println(ex.getMessage());
                msbx.showErrrorMessage(ex.getLocalizedMessage(), "Error!");
            }
        }
    }

 

    @Override
    public String getColumnName(int col){
        return dbCellNames[col];
    }

    public boolean isCellEditable(){
        return false;
    }

    public int getColumnCount() {
      return CollCount;
    }

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

    public Object getValueAt(int rowIndex, int columnIndex) {
        row = (Vector) Alldata_row.elementAt(rowIndex);
        return row.elementAt(columnIndex);
    }


    @SuppressWarnings("unchecked")
    @Override
    public void setValueAt(Object value, int row, int coll){
        Vector DataRow = (Vector) Alldata_row.elementAt(row);
        DataRow.setElementAt(value, coll);
        fireTableRowsUpdated(row, coll);
    }

    /**
     *
     * @param rowIndex
     */
    public void deleteRow(int rowIndex){
        Alldata_row.removeElementAt(rowIndex);
        fireTableRowsDeleted(rowIndex, rowIndex);
    }

    /**
     *
     * @param data
     */
    @SuppressWarnings("unchecked")
    public void addRow(Object data){
       Alldata_row.addElement(data);
       int allRowNumber = Alldata_row.size();
       fireTableRowsInserted(allRowNumber, allRowNumber);
    }


Ниже обработчик события происходящего в родительском окне.. 

Код

private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String sv = (String) jTable1.getModel().getValueAt(jTable1.getSelectedRow(), 0);
        int selectedValue = Integer.valueOf(sv);
        Nedopostavka_TK _ndtk = new Nedopostavka_TK(getFrame(), true, selectedValue);
        Nedopostavka_TK_TM nptktm = (Nedopostavka_TK_TM) _ndtk.getTable().getModel();
        nptktm.setSelectValue(selectedValue); // передаем занчение ID  в модельданных таблицы.
        _ndtk.setVisible(true);
    }


Это сообщение отредактировал(а) Valor - 21.1.2009, 08:37
PM MAIL   Вверх
Grig
Дата 21.1.2009, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Что не понятно? Вы создаете экземпляр класса:
Код

test T=new test(25);


Конструктор принимает значение, и инициализует переменную:
Код

public test(int external_A){
       this.A = external_A;
}


Теперь можете вызывать ее из созданного экземпляра:
Код

System.out.println(T.A);


А причем ваш реальный класс, я не понял


--------------------
        
PM MAIL ICQ   Вверх
Valor
Дата 21.1.2009, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Код

String sv = (String) jTable1.getModel().getValueAt(jTable1.getSelectedRow(), 0);
        int selectedValue = Integer.valueOf(sv);
        Nedopostavka_TK _ndtk = new Nedopostavka_TK(getFrame(), true, selectedValue);
        Nedopostavka_TK_TM nptktm = (Nedopostavka_TK_TM) _ndtk.getTable().getModel(); <-------------------- как мне  передать параметр в конструктор класса ?
        nptktm.setSelectValue(selectedValue); // передаем занчение ID  в модельданных таблицы. <----------- хотел сделать так.
        _ndtk.setVisible(true);



PM MAIL   Вверх
math64
Дата 21.1.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



В конструкторе вызывай setSelectedValue(default_selected_value);
Делай выборку из базы данных в методе setSelectedValue(), в конце этого метода вызывай fireTableDataChanged() или fireTableStructureChanged().
PM   Вверх
Valor
Дата 21.1.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



В общем сделал вот так.

Код

 MessageBox msbx = new MessageBox();
    Connection conn = null;
    Statement st = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    ResultSetMetaData rsmd = null;
    String TableName;
    int CollCount = 0;
    String dbCellNames[]; //name cel from data base
    Vector Alldata_row = new Vector();
    Vector Alldata_cell = new Vector();
    Vector row;
    int WhereID;

  

    public void setSelectValue(int ID_value){
       this.WhereID = ID_value;
    }

    
    public Nedopostavka_TK_TM() {
        loadDataInToTable(WhereID);     
    }
    @SuppressWarnings("unchecked")
    public void loadDataInToTable(int creteria){
        try{
        Vector newData;
        conn = MySQLFactory.getConnection();
        st = (Statement) conn.createStatement();
        rs = st.executeQuery("SELECT `nedopostavka_tk`.`id_netdopost`,`nedopostavka_tk`.`sum`,`nedopostavka_tk`.`data_pritenzi`," +
                "`nedopostavka_tk`.`dppkr`,`nedopostavka_tk`.`summa_compinsaci`,`nedopostavka_tk`.`date_compinsaci`" +
                " FROM `nedopostavka_tk` Inner Join `otgruzka` ON `otgruzka`.`id_odgruzka` = `nedopostavka_tk`.`id_doc`" +
                " WHERE `nedopostavka_tk`.`id_doc` = '" + WhereID + "'");
        System.out.println("Debug : ID = " + WhereID);
        rsmd = (ResultSetMetaData) rs.getMetaData();
        TableName = rsmd.getTableName(1);
        CollCount = rsmd.getColumnCount();
        dbCellNames = new String[CollCount];
        System.out.println(CollCount);
        for (int x = 0; x < CollCount; x ++){
            dbCellNames[x] = TableHeaderName[x];// rsmd.getColumnName( x +1);
        }
            while(rs.next()){
                newData = new Vector();
                for(int q = 1; q <= CollCount; q ++){
                    newData.addElement(rs.getString(q));
                }
                Alldata_row.addElement(newData);
            }
        }catch(Exception ex){
            msbx.showErrrorMessage(ex.getMessage(), "Error!");
        }finally{
            try{
                rs.close();
                st.close();
                conn.close();
            }catch(Exception ex){
                System.out.println(ex.getMessage());
                msbx.showErrrorMessage(ex.getLocalizedMessage(), "Error!");
            }
        }
    }
 

    @Override
    public String getColumnName(int col){
        return dbCellNames[col];
    }

    public boolean isCellEditable(){
        return false;
    }

    public int getColumnCount() {
      return CollCount;
    }

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

    public Object getValueAt(int rowIndex, int columnIndex) {
        row = (Vector) Alldata_row.elementAt(rowIndex);
        return row.elementAt(columnIndex);
    }


    @SuppressWarnings("unchecked")
    @Override
    public void setValueAt(Object value, int row, int coll){
        Vector DataRow = (Vector) Alldata_row.elementAt(row);
        DataRow.setElementAt(value, coll);
        fireTableRowsUpdated(row, coll);
    }

    /**
     *
     * @param rowIndex
     */
    public void deleteRow(int rowIndex){
        Alldata_row.removeElementAt(rowIndex);
        fireTableRowsDeleted(rowIndex, rowIndex);
    }

    /**
     *
     * @param data
     */
    @SuppressWarnings("unchecked")
    public void addRow(Object data){
       Alldata_row.addElement(data);
       int allRowNumber = Alldata_row.size();
       fireTableRowsInserted(allRowNumber, allRowNumber);
    }
}


соответственно в акшене вызываю

Код

private void formWindowOpened(java.awt.event.WindowEvent evt) {
        Nedopostavka_TK_TM _ntk = (Nedopostavka_TK_TM) jTable1.getModel();
        _ntk.setSelectValue(IDrow);
}


вываливает экзепшен

Код

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: truelogistck
.directory.nedopostavki.tablemodels.Nedopostavka_TK_TM.<init>(I)V
        at truelogistck.TrueLogistckView.jMenuItem4ActionPerformed(TrueLogistckV
iew.java:660)
        at truelogistck.TrueLogistckView.access$1800(TrueLogistckView.java:36)
        at truelogistck.TrueLogistckView$14.actionPerformed(TrueLogistckView.jav
a:505)

PM MAIL   Вверх
vdim
Дата 21.1.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 19.4.2008

Репутация: нет
Всего: нет



Обычно такое у меня вылезает, если проект из нескольких файлов и используешь систему сборки (я, например, ant). В одном файле убрал метод, а в другом его юзаешь, но т.к. этот другой в своем исходнике не изменился, то он и не пересобрался. Мне обычно помогает удаление директирии с *.class ( у меня цель в build есть цель специальная).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.