2013-04-28 39 views
0

這是我的表類JTable中沒有返回的最後一個單元格的值

package build; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 

public class Table 
{ 
private ArrayList<Column> columns; 
private String NAME; 
private static int count=0; 
public Table() 
{ 
    setColumns(new ArrayList<Column>()); 
    NAME=new String(); 

    this.NAME="Table"+count; 
    count++; 
} 

public void AddColumn(Column column) 
{ 
    for(Column c: getColumns()) 
    { 
     if(c.getname().equals(column.getname())){return;} 
    } 

    getColumns().add(column); 

} 
public int getCount(){return count;} 
public void SaveToFile() throws IOException 
{ 


    FileWriter fw = new FileWriter("C:/Users/Ashad/Desktop/text.txt", true); 
    BufferedWriter bw = new BufferedWriter(fw); 
    bw.write("\r\n"); 
    bw.write(this.NAME); 
    bw.write("\r\n"); 

for(Column c: getColumns()) 
{ 
bw.write("\r\n"); 
     bw.write(c.getname()+" "); 

     bw.write(c.getdatatype()+" "); 


if(c.getPK()== true) 
{ 
     bw.write("true"+" "); 

}  
    else 
    { bw.write("false"+" "); 

    } 
if(c.getNN()== true) 
{ 
    bw.write("true"+" "); 

}  
else 
    {bw.write("false"+" "); } 



} 
bw.close(); 
} 

    public boolean DeleteColumn(String name) 
    { 
    for (Column c : getColumns()) 
    { 
     if (c.getname().equals(name)) {return getColumns().remove(c);} 
    } 
    return false; 
    } 

public void viewColumns() 
{ 
     System.out.append(NAME+" "); 

    for(Column c: getColumns()) 
    { 
     System.out.append("\n"); 
     System.out.append(c.getname()+" "); 

     System.out.append(c.getdatatype()+" "); 

     if(c.getPK()== true) 
     { 
     System.out.print(true); 
     } 
      else 
     System.out.print(false); 
     } 
    } 

public String getNAME() { 

    return NAME; 
} 

public ArrayList<Column> getColumns() { 
    return columns; 
} 

public void setColumns(ArrayList<Column> columns) { 
    this.columns = columns; 
} 



    } 

JTable中

table.setModel(new DefaultTableModel(

        new Object[][] { 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 

        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        {null, null, null, null}, 
        }, 
     new String[] { 
      "Column Name", "Data Type", "NN", "PK" 
         } 
      ) { 
        Class[] columnTypes = new Class[] { 
       String.class, Object.class, Boolean.class, Boolean.class 
      }; 
     public Class getColumnClass(int columnIndex) { 
       return columnTypes[columnIndex]; 
     } 

下面的按鈕保存插入的JTable的表中的對象的值。

btnNewButton.addActionListener(new ActionListener() 
    { 
    @Override 
    public void actionPerformed(ActionEvent e) { 

     // getTable Values 
     for (int r = 0; r < model.getRowCount(); r++) 
     { 
      if((String)model.getValueAt(r, 0) != null) 
     { 

        Column col=new Column(); 

      col.setname((String) model.getValueAt(r, 0)) ; 
      col.setdatatype((String) model.getValueAt(r, 1)); 


      /* if((Boolean)model.getValueAt(r, 2)== true) 
         { 
       col.setPK(true); 
       } 


      if((Boolean)model.getValueAt(r, 3)== true) 
       { 
        col.setNN(true); 
        } 
       */ 

        T.AddColumn(col); 

      } 
       else 
         break; 
      } 
      try { 
      T.SaveToFile(); 
      } catch (IOException e1) { 

      e1.printStackTrace(); 
        } 
      T.viewColumns(); 
      frame.setVisible(false); 
         } 
        }); 

問題:: *它不是節省例如最後的值,如果最後插入的值是在model.getValueAt(1,1)或它的在model.getValueAt(2,1)

如果上的JTable輸入是類型1 INT
類型2炭

輸出其上面的代碼給出::的Type1詮釋
類型2

  • 第二個問題是關於取消註釋

    如果((布爾型)model.getValueAt(R,2)== TRUE){ col.setPK(真); } 和

    如果((布爾型)model.getValueAt(R,3)== TRUE){ col.setPK(真); }

它給出錯誤,因爲返回類型是布爾值。

回答

2

它不保存最後的值

也許Table Stop Editing會有所幫助。

+0

不,這不是我的問題;我有一個儲蓄機制;問題在於model.getValueAt(r,2)發生的for循環。我無法弄清楚爲什麼它沒有保存最後的價值 – Asdakamessoy 2013-04-28 21:23:41

相關問題