JTable avec JTextField

Résolu
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 - 22 nov. 2007 à 16:06
 basssouma - 2 sept. 2012 à 20:37
salut

j'ai un JButton ajouter et un JTable t , je cherche sije click sur le bouton  alors  le text de JTextField s'affiche sur  la ligne de la colonne 1 

 
publicclass Untitled2 extends JFrame implements ActionListener   {
 
  
  
   JPanel jPanel1 = new JPanel();
 
JScrollPane jS = new JScrollPane();
  JButton ajouter = new JButton();
  JTextField text = new JTextField();
 
 
 
 
           public Untitled2(){
             setTitle(" fenetre ");
    this.setResizable(false);
    this.setSize(650, 650);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
    try{
      jbInit();
    }
    catch(Exception e){
      e.printStackTrace();
    }
            
           }
  privatevoid jbInit()throws Exception {
   
    jPanel1.setLayout(null);
   this.getContentPane().setLayout(null);
  
     jPanel1.setBounds(new Rectangle(51, 12, 269, 262));
    Object[][] data = {
        {
        "", "", "", "", "", "", "", ""}
        , {
        "", "", "", "", "", "", "", ""}
    };
 
    String[] columns = {
        "Date_etablissement", "equipement", "Description_equipement",
        "Designation_article"};
    JTable t = new JTable(data, columns);
 
    jS.setBounds(new Rectangle(30, 17, 208, 134));
       jS.setViewportView(t);
     jPanel1.add(jS);
    
   
 
    ajouter.setBounds(new Rectangle(193, 197, 71, 23));
    ajouter.setText("ajouter");
    ajouter.addActionListener(this);
    text.setText("");
    text.addActionListener(this);
    text.setBounds(new Rectangle(61, 196, 62, 20));
    this.getContentPane().add(jPanel1, null);
   
    jPanel1.add(ajouter, null);
    jPanel1.add(text, null);
  
 
 
 
  }             
  publicstaticvoid main(String[] args){
      Untitled2 gui = new Untitled2();
      gui.setVisible(true);
    }
 
 
  publicvoid actionPerformed(ActionEvent e){
 
     if(e.getSource().equals(ajouter)){
  String A ;
      A= text.getText().toString();
  System.out.println(A);
 
 
     }
   }
 
 
 
    }
 

15 réponses

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
22 nov. 2007 à 17:16
yo !

public








class

Untitled2


extends

JFrame


implements

ActionListener {

JPanel


jPanel1
=


new

JPanel();

JScrollPane


jS
=


new

JScrollPane();

JButton


ajouter
=


new

JButton();

JTextField


text
=


new

JTextField();

JTable


table
;



public

Untitled2() {setTitle(


" fenetre "
);



this

.setResizable(


false

);



this

.setSize(650, 650);



this

.setLocationRelativeTo(


null

);



this

.setDefaultCloseOperation(JFrame.


EXIT_ON_CLOSE

);



try

{jbInit();

}



catch

(Exception e) {e.printStackTrace();

}

}



private





void

jbInit()


throws

Exception {


jPanel1
.setLayout(


null

);



this

.getContentPane().setLayout(


null

);


jPanel1
.setBounds(


new

Rectangle(51, 12, 269, 262));Object[][] data = { {


""
,

""
,

""
,

""
,

""
,

""
,

""
,

""
},{


""
,

""
,

""
,

""
,

""
,

""
,

""
,

""
} };

String[] columns = {


"Date_etablissement"
,

"equipement"
,


"Description_equipement"
,

"Designation_article"
};


table
=


new

JTable(data, columns);


jS
.setBounds(


new

Rectangle(30, 17, 208, 134));


jS
.setViewportView(

table
);


jPanel1
.add(

jS
);


ajouter
.setBounds(


new

Rectangle(193, 197, 71, 23));


ajouter
.setText(

"ajouter"
);


ajouter
.addActionListener(


this

);


text
.setText(

""
);


text
.addActionListener(


this

);


text
.setBounds(


new

Rectangle(61, 196, 62, 20));



this

.getContentPane().add(

jPanel1
,


null

);


jPanel1
.add(

ajouter
,


null

);


jPanel1
.add(

text
,


null

);

}



public





static





void

main(String[] args) {Untitled2 gui =



new

Untitled2();gui.setVisible(



true

);}



public





void

actionPerformed(ActionEvent e) {



if

(e.getSource().equals(

ajouter
)) {String A;

A =


text
.getText().toString();


table
.setValueAt(A, 0, 0);CellEditor editor =


table
.getCellEditor(0,0);

}

}

}
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
22 nov. 2007 à 21:24
Salut:

J'ai écrit une méthode plus générique:

JTable table;

public void delete() {
    ListSelectionModel selectionModel = table.getSelectionModel();
    if (selectionModel.getSelectionMode() == ListSelectionModel.SINGLE_SELECTION) {
       int index = table.getSelectedRow();
       if (index != -1) {
          table.getModel().removeRow(index);
       }
    }
    else {
       int[] indexArray = table.getSelectedRows();
       if (indexArray.length != 0) {
          for (int i = 0; indexArray.length; ++i) {
             table.getModel().removeRow(indexArray[i]);
          }
       }
    }
}
3
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
22 nov. 2007 à 20:44
merci


je coince encore je cherche a si click sur le bouton la ligne selectionnée sera supprimer de jtable
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
22 nov. 2007 à 21:01
Salut:

private JTable table;

// ...

public void delete() {
    int index = table.getSelectedRow();
    if (index != -1) {
       table.getModel().removeRow(index);
    }
}

Bye.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
23 nov. 2007 à 00:03
merci encore mais j'ai un message d'erreur
 if (e.getSource().equals(copy)) {


     int index = t.getSelectedRow();
      if (index != -1) {
         t.getModel().removeRow(index);
      }

"Untitled2.java": cannot resolve symbol: method removeRow (int)in interface javax.swing.table.TableModel at line 237, column 23
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
23 nov. 2007 à 11:18
Salut:

Les méthodes removeRow() et removeRows() appartiennent à la classe DefaultTableModel.

private String[] columns = {...};
private Object[][] data = {...};
private DefaultTableModel model = new DefaultTableModel(data, columns);
private JTable table = new JTable(model);

// ...

private void delete() {
    int index = table.getSelectedRow();
    if (index != -1) {
       model.removeRow(index);
    }
}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
23 nov. 2007 à 14:33
Salut:

Personnellement, je te conseille d'utiliser la deuxième version de la méthode delete() parcequ'elle est plus générique et elle permet de supprimer plusieurs lignes séléctionnées.

Bye.
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
23 nov. 2007 à 14:37
salut merci encore mais ça fonctionne pas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


import javax.swing.table.DefaultTableModel; 


public class cadre extends JFrame implements ActionListener {


JPanel jPanel1 = new JPanel();


JScrollPane jS = new JScrollPane();


JButton copy = new JButton();


JTable table ;
private DefaultTableModel model ;


public cadre() {
 
 
  setTitle(" fenetre " );


this .setResizable( false );


this .setSize(650, 650);


this .setLocationRelativeTo( null );


this .setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE );




try {
jbInit();


}


catch (Exception e) {
e.printStackTrace();


}


}




private void jbInit() throws Exception {


jPanel1 .setLayout( null );


this .getContentPane().setLayout( null );




jPanel1 .setBounds( new Rectangle(51, 12, 269, 262));
Object[][] data = { { "" , "" , "" , "" , "" , "" , "" , "" },{"" , "" , "" , "" , "" , "" , "" , "" } };


String[] columns = { "Date_etablissement" , "equipement" ,"Description_equipement" , "Designation_article" };


table = new JTable(data, columns);




jS .setBounds( new Rectangle(30, 17, 208, 134));


jS .setViewportView( table );


jPanel1 .add( jS );




copy .setBounds( new Rectangle(193, 197, 71, 23));


copy .setText( "copy" );


copy .addActionListener( this );


this .getContentPane().add( jPanel1 , null );




jPanel1 .add( copy , null );


}




public static void main(String[] args) {
cadre gui = new cadre();
gui.setVisible(


true );
}


 


public void actionPerformed(ActionEvent e) {
 
     ListSelectionModel selectionModel = table.getSelectionModel();
     if (selectionModel.getSelectionMode() == ListSelectionModel.SINGLE_SELECTION) {
        int index = table.getSelectedRow();
        if (index != -1) {
        model.removeRow(index);
        }
     }
     else {
        int[] indexArray = table.getSelectedRows();
        if (indexArray.length != 0) {
           for (int i = 0;i< indexArray.length; ++i) {
             model.removeRow(indexArray[i]);
           }
        }
     }


 


}




}
java.lang.NullPointerException
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
23 nov. 2007 à 20:57
j'ai réglé ce problème et merci encore , je continue avec jtable , je chercher à modifier une ligne si je tape sur le bouton modifier alors le continue de la ligne s'affiche sur JTextfield

 f (e.getSource().equals(modifier)) {


 System.out.println( model.getColumnName(index));
 
 
  }
model.getColumnName(index) retourne le nom de la colonne mais je chercher à afficher la valeur de la cellule par exemple  la cellule de la deuxième colonne de la premiere ligne
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
24 nov. 2007 à 00:08
merci j'ai trouvé la solution

int ligne = t.getSelectedRow(); 
  
       String cellule1 = (String) t.getValueAt(ligne, 0);

puis afficher sur jtexyfield
  text.setText(cellule1);
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 nov. 2007 à 17:45
Salut:

Tu peux utiliser les méthodes setValueAt() et getValueAt() pour modifier et consulter la contenu d'une cellule d'un objet JTable.

Note: Il vaut mieux créer pour chaque colonne un JLabel et un JTextField pour la modification.

private JTable table;

// ...

// La boucle principale
for (int i = 0; i < table.getColumnCount(); ++i) {
    // Utiliser les méthodes déjà citées
}

Bye.
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
24 nov. 2007 à 20:07
je veux construire un jtable avec des cellules non modifiable comme le texte de jlabel ou jboutton
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 nov. 2007 à 21:10
Salut:

Il faut créer une sous-classe de la classe DefaultTableModel est redéfinir la méthode isCellEditable().

public class CustomTableModel extends DefaultTableModel {
    public CustomTableModel() {}

    public CustomTableModel(Object[][] dataVector, String[] columnNames) {
       super(dataVector, columnNames);
    }

    @Override
    public boolean isCellEditable(int row, int cell) {return false;}
}

// ...

private Object[][] data = ...;
private String[] columnNames = ...;
private JTable table = new JTable(new CustomTableModel(data, columnNames));

Bye.
0
ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 1
24 nov. 2007 à 22:14
salut  regarde ce que j'ai fais mais ça fonctionne pas
    String[] columns = {"réference", "prix", "quantité","Designation_article"};
//table = new JTable(data, columns);
 model = new DefaultTableModel(columns,0);
 t = new JTable(model);
model.addRow(new String[] { "" , "" , "" , ""   });
model.addRow(new String[] { "" , "" , "" , ""  });
model.addRow(new String[] { "" , "" , "" , "" });
 
model.isCellEditable(1,0);// pour tester si cellule est modifiable

public boolean isCellEditable(int row, int col)
       { return true; }
0
salut,
jai une interface client et une interface ListeClient ou il ya un jtable pour la liste des clients je veux quant je click sur le une ligne de jtable puis sur le popumenu modifier d'interface ListClient je fais appel a linteface Client en affectant les valeurs de row da,s les champs de linteface Client par exemple le nom doit etre affecté systematiquement de la ligne sélectionné ds la table ?
svp quelq'un m'aider comment faire car je faire des recherche mé rien :(
0
Rejoignez-nous