2016-11-18 78 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();