2015-02-02 4 views
0

Я хочу создать JTable, который «Анализ», «Дата» и «Цена» имен столбцов. Значение анализа и цены восстанавливается из базы данных в моей базе данных, а дата получает значение текущего дня.Установленное значение в JTable динамически

Я создал класс MyModel как следующее:

package com.pack.classes; 

import java.util.LinkedList; 

import javax.swing.table.AbstractTableModel; 

import com.pack.beans.MyElement; 

@SuppressWarnings("serial") 
public class MyModel extends AbstractTableModel { 

    public static final String[] columnNames = {"Analyse", "Date d'analyse","Prix"}; 
    private final LinkedList<MyElement> list; 

    public MyModel() { 
     list = new LinkedList<MyElement>(); 
    } 

    public void addElement(MyElement e) { 
     // Adds the element in the last position in the list 
     list.add(e); 
     fireTableRowsInserted(list.size()-1, list.size()-1); 
    } 

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

    @Override 
    public int getRowCount() { 
     return list.size(); 
    } 

    @Override 
    public Object getValueAt(int rowIndex, int columnIndex) { 
     switch(columnIndex) { 
      case 0: return list.get(rowIndex).getAnalysis(); 
      case 1: return list.get(rowIndex).getDate(); 
      case 2: return list.get(rowIndex).getPrice(); 
     } 
     return null; 
    } 

} 

И я создать Bean MyElement как:

package com.pack.beans; 

import java.util.Date; 

public class MyElement { 

    String analysis; 
    Date date; 
    Double price; 

    public String getAnalysis() { 
     return analysis; 
    } 
    public void setAnalysis(String analysis) { 
     this.analysis = analysis; 
    } 
    public Date getDate() { 
     return date; 
    } 
    public void setDate(Date date) { 
     this.date = date; 
    } 
    public Double getPrice() { 
     return price; 
    } 
    public void setPrice(Double price) { 
     this.price = price; 
    } 

} 

Вот часть моего кода, который используется этот класс :

String sql = "Select name,number_b from analysis_tab where name ='" + idclicked + "'"; 
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); 
        Date date = new Date(); 
        System.out.println(dateFormat.format(date)); 
        PreparedStatement preparestate = database.con.prepareStatement(sql); 
        ResultSet rs = preparestate.executeQuery(); 
        MyModel mymodel = new MyModel(); 
        String [] value = mymodel.columnNames; 

        MyElement e = new MyElement(); 
        //e.setAnalysis(name); 
        e.setDate(date); 
        //e.setPrice("number_b"); 

в результате я получить таблицы с 3 coloumn "A", "B" и "C" .I не знает, следовательно, я Имя ese приходит !!! Если вы скажете мне, как я могу поместить имена моих колонок «Анализ», «Дать анализ», «Prix» в качестве заголовка в моей таблице? Я на правильном пути?

+2

Прочитайте [учебник для 'JTable'] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html). – alex2410

+0

делать что? создать JTable? выполните поиск [oracle tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html). – jhamon

+0

Я просто добавляю метод getColumnNames в класс MyModel, и это работает :) – Sarra

ответ

1

Почему бы вам не использовать DefaultTableModel? Это мощный, чем использование только jtable.

// вставить имя столбца

defaultTableModel.setColumnIdentifiers(new String[]{"Analyse", "Date d'analyse","Prix"}); 

И .. Ваш SQL является тип заявление! Если вы можете, измените стиль sql, как показано ниже.

String sql = "Select name,number_b from analysis_tab where name ='" + idclicked + "'"; 

=>

String sql = "Select name,number_b from analysis_tab where name = ?" 
PreparedStatement preparestate = database.con.prepareStatement(sql); 
pstmt.setString(1, idclicked); 
rs = pstmt.executeQuery(); 

Проверить "PreparedStatement" и "Заявление"! :)

Смежные вопросы