2016-11-18 6 views
-1

Ich lese andere Beiträge zum gleichen Thema, aber ich habe nicht bekommen, was ich genau wollte. Kann jemand Tellhow i Checkbox in JTable im Raw namens "sélectionné"hinzufügen Kontrollkästchen in 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();

Vielen Dank im Voraus hinzufügen können.

+0

Was war Ihr Ansatz ein und das Ergebnis zu implementieren? – KyleKW

+0

Bitte suchen Sie in SO oder Google, das ist bereits beantwortet. – brummfondel

+0

'Ich lese andere Beiträge zum gleichen Thema, aber ich habe nicht bekommen, was ich genau wollte '- Nun Link zu den Posts, die Sie gelesen haben. Wir können nicht erraten, was Sie versucht haben und wollen nicht die Zeit damit verbringen, denselben Vorschlag zu wiederholen. Und Sie werden nie "genau" bekommen, was Sie wollten. Die Idee ist, dass Sie die Vorschläge verstehen und den Code für Ihre genaue Anforderung anpassen. Stellen Sie spezifische Fragen zu dem Code, den Sie finden, wenn Sie Probleme haben. – camickr

Antwort

0

Sie müssen ein eigenes Tabellenmodell erstellen. Die DefaultTableModel scheint nicht booleans als Kontrollkästchen zu machen:

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

, aber das AbstractTableModel muss nicht erweitert werden. Erweitern Sie einfach das DefaultTableModel und überschreiben Sie die 'getColumnClass (...)' Methode. Dann können Sie einfach die 'addRow (...)' Methode des – camickr

+0

@camickr absolut benutzen! –

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

Das Codezeile versucht, mehrere Strings auf das Tablemodel hinzuzufügen. Wenn Sie ein Kontrollkästchen möchten, müssen Sie einen String und einen Booleschen Wert hinzufügen.

Wenn Sie das TableModel erstellen, müssen Sie die Methode getColumnClass() überschreiben, damit die Tabelle den entsprechenden Renderer/Editor verwenden kann.

Also, wenn Sie das Modell erstellen müssen Sie die getColumnClass(...) Methode außer Kraft zu setzen:

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

Wenn Sie Daten in der Tabelle fügen Sie Ihren Code etwas sein muss wie:

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

So werden Sie Sie müssen die Daten analysieren, um herauszufinden, welchen Wert Sie für Ihren Booleschen Wert verwenden müssen (WAHR oder FALSCH).

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();

Verwandte Themen