2016-11-18 35 views
-1

我閱讀了關於同一主題的其他帖子,但是我沒有得到我確切需要的內容。 任何人都可以泰豪我在JTable中的原料添加複選框可以命名爲 「selectionné」在JTable中添加複選框

 int linenumber=0; 
 
     JFileChooser filechooser=new JFileChooser(); 
 
     int aa=filechooser.showOpenDialog(null); 
 
     file = filechooser.getSelectedFile(); 
 
     ///-------------------------------------------- 
 
     String col[]={"Les Requéte","selectionné"}; 
 
     DefaultTableModel tableModel = new  DefaultTableModel(null,col); 
 
     tableModel.setColumnIdentifiers(col); 
 
     table.setModel(tableModel); 
 
     ///------------- 
 
     
 
     if (aa== JFileChooser.APPROVE_OPTION){ 
 
      try { 
 
       file= filechooser.getSelectedFile(); 
 
       in = new BufferedReader(new FileReader(file-)); 
 
       String line = null; 
 
       while ((line = in.readLine()) != null) { 
 
      linenumber++; tableModel.addRow(line.split(", "));  
 
       } 
 
    filereader.close();

在此先感謝。

+0

什麼是你的方式來實施一個結果呢? – KyleKW

+0

請在SO或Google中搜索,這已經得到解答。 – brummfondel

+0

'我閱讀同一主題的其他帖子,但我沒有得到我真正想要的東西 - - 很好鏈接到你閱讀的帖子。我們無法猜測您嘗試過的內容,也不想花時間重複相同的建議。你永遠不會「確切地」得到你想要的東西。這個想法是讓你理解這些建議並根據你的確切需求定製代碼。如果遇到問題,請提出有關您找到的代碼的具體問題。 – camickr

回答

0

您必須創建自己的表模型。 DefaultTableModel方面似乎並沒有使布爾爲複選框:

public static void main(String[] args) { 

    JFrame frame = new JFrame("Editable Color Table"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JTable table = new JTable(new MyTableModel()); 

    JScrollPane scrollPane = new JScrollPane(table); 
    frame.add(scrollPane, BorderLayout.CENTER); 
    frame.setSize(400, 150); 
    frame.setVisible(true); 
} 

static class MyTableModel extends AbstractTableModel { 

    Object rowData[][] = { { "1", Boolean.TRUE }, { "2", Boolean.TRUE }, { "3", Boolean.FALSE }, 
      { "4", Boolean.TRUE }, { "5", Boolean.FALSE }, }; 

    String columnNames[] = {"Les Requéte","selectionné"}; 

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

    public String getColumnName(int column) { 
     return columnNames[column]; 
    } 

    public int getRowCount() { 
     return rowData.length; 
    } 

    public Object getValueAt(int row, int column) { 
     return rowData[row][column]; 
    } 

    public Class getColumnClass(int column) { 
     return (getValueAt(0, column).getClass()); 
    } 

    public void setValueAt(Object value, int row, int column) { 
     rowData[row][column] = value; 
    } 

    public boolean isCellEditable(int row, int column) { 
     return (column != 0); 
    } 
} 
+0

,但不需要擴展AbstractTableModel。只需擴展DefaultTableModel並覆蓋'getColumnClass(...)'方法。那麼你可以絕對使用 – camickr

+0

@camickr的'addRow(...)'方法! –

1
linenumber++; tableModel.addRow(line.split(", "));  

這行代碼試圖將多個字符串添加到的TableModel。如果你想要一個複選框,那麼你需要添加一個字符串和一個布爾值。

然後,當您創建TableModel時,您需要重寫getColumnClass()方法,以便表可以使用適當的渲染器/編輯器。

所以,當你創建模型,你需要重寫getColumnClass(...)方法:當您將數據添加到您的代碼需要表

DefaultTableModel model = new DefaultTableModel(columnNames,) 
    { 
     @Override 
     public Class getColumnClass(int column) 
     { 
      return column == 0 ? String.class : Boolean.class; 
     } 
    }; 

類似:

Object[] row = {"someText", Boolean.FALSE}; 
model.addRow(row); 

所以你會需要解析數據以找出布爾值(TRUE或FALSE)使用的值。

0

int linenumber=0; 
 
     JFileChooser filechooser=new JFileChooser(); 
 
     int aa=filechooser.showOpenDialog(null); 
 
     file = filechooser.getSelectedFile(); 
 
     ///-------------------------------------------- 
 
     String col[]={"Les Requéte","selectionné"}; 
 
     DefaultTableModel tableModel = new  DefaultTableModel() 
 
     { 
 
      public Class getColumnClass(int column){ 
 
      return column == 0?String.class :Boolean.class; 
 
      } 
 
     }; 
 
     tableModel.setColumnIdentifiers(col); 
 
     table.setModel(tableModel); 
 
Object [] row={Bookean.FALSE}; 
 
     ///------------- 
 
     
 
     if (aa== JFileChooser.APPROVE_OPTION){ 
 
      try { 
 
       file= filechooser.getSelectedFile(); 
 
       in = new BufferedReader(new FileReader(file-)); 
 
       String line = null; 
 
       while ((line = in.readLine()) != null) { 
 
        linenumber++; 
 
        tableModel.addRow(line.split(", ")); 
 
        tableModel.addRow(row): 
 
        
 
       } 
 
    filereader.close();