2016-05-03 6 views
1

Ich möchte ein Kontrollkästchen in JTable hinzufügen und wenn der Benutzer eine Frage wählt, wird es auf einem anderen JTable hinzugefügt, aber die Priorität ist, dass ich das Kontrollkästchen mit der Kenntnis hinzufügen möchte JTable enthält Informationen aus der Datenbank. Danke für Hilfe. Ich hoffe, dass du mich verstehst. I Modelle machte ich das, was ich haben will this is the models that i want to have Dies ist das Ergebnis meines Codes The resultWählen Sie einen Artikel aus JTable und setzen Sie sie auf einen anderen

List<Question> questions=new ArrayList<>(); 
JButton btnAfficher = new JButton("Afficher toutes les questions"); 
    btnAfficher.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      categorie=GestionCategorieDelegate.doFindCategorieById(PreparerTest.idCategorie); 
      questions=GestionTestDelegate.doPrepareManuallyTest(categorie); 
      initDataBindings(); 

     } 
    }); 
    table_1 = new JTable(); 
    scrollPane_1.setViewportView(table_1); 

    table = new JTable(); 
    scrollPane.setViewportView(table); 
    setLayout(groupLayout); 
    initDataBindings(); 
+0

Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. Hard-Code einige Daten, um die DB zu ersetzen. –

+0

* "... zu wissen, dass die JTable Informationen aus der Datenbank enthält." * Wie ist es relevant, woher die Daten stammen? Meinst du, wenn eine Tabellenzeile von einer Tabelle in die andere verschoben wird, sollte sie ** aus der DB gelöscht werden? –

+0

@Andrew Thompson es ist ein einfacher Code und Priyamal verstand es ich nicht warum bist du nicht – Georgio

Antwort

1
CustomTableModel mymodel = new CustomTableModel(); 
mymodel.addRow(new Object[]{false, "2ndcoldata", "3rdcol data"}); 
mymodel.addRow(new Object[]{true, "2ndcoldata", "3rdcol data"}); 
mytable.setModel(mymodel); 


public class CustomTableModel extends DefaultTableModel { 

    public MyTableModel() { 
     super(new String[]{"col1", "col2", "col3"}, 0); 

@Override 
public Class<?> getColumnClass(int columnIndex) { 
    Class clazz = String.class; 
    switch (columnIndex) { 
    case 0: 
     clazz = Boolean.class; 
     break; 
    } 
    return clazz; 
} 

@Override 
public boolean isCellEditable(int row, int column) { 
    return column == 0; 
} 

@Override 
public void setValueAt(Object aValue, int row, int column) { 
    if (aValue instanceof Boolean && column == 0) { 
    Vector rowData = (Vector)getDataVector().get(row); 
    rowData.set(0, (boolean)aValue); 
    fireTableCellUpdated(row, column); 
    } 
}} 

Sie es mit obigem Ansatz tun, habe ich customtableModel Klasse, die die DefaultTableModel-Klasse erweitert. und wann immer Sie Daten zu Ihrer Tabelle hinzufügen müssen, erstellen Sie eine Instanz von CustomTableModel und fügen Sie Ihre Zeilendaten dem Modell hinzu, sobald es fertig ist, und setzen Sie das Modell auf Ihre jtable.

+0

Vielen Dank für Sie Hilfe, aber bitte wo ich diesen Code? – Georgio

+0

public TableCheckBox() { Objekt [] columnNames = {"Select", "Contenu", "Antworten", "Niveau de difficle"}; Objekt [] [] data = { was ich da hingehalten habe, um die Daten aus der Datenbank zu übernehmen }; DefaultTableModel model = neues DefaultTableModel (data, columnNames); Tabelle = neue JTable (Modell) Tabelle = neue JTable (Modell) { – Georgio

+0

Customnodel ist eine Klasse, so offensichtlich können Sie es nicht in eine Methode einfügen. Und das Erstellen einer Instanz von custommodel und das Hinzufügen von Daten dazu kann innerhalb einer Methode erfolgen. – Priyamal

Verwandte Themen