JTable avec JTextField [Résolu]

Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
- 22 nov. 2007 à 16:06 - Dernière réponse :  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);
 
 
     }
   }
 
 
 
    }
 
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Dernière intervention
8 mars 2011
22 nov. 2007 à 17:16
3
Merci
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);

}

}

}

Merci super_toinou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de super_toinou
Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
22 nov. 2007 à 21:24
3
Merci
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]);
          }
       }
    }
}

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
22 nov. 2007 à 20:44
0
Merci
merci


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

private JTable table;

// ...

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

Bye.
Commenter la réponse de Ombitious_Developper
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
23 nov. 2007 à 00:03
0
Merci
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
Commenter la réponse de ulysse00
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
23 nov. 2007 à 11:18
0
Merci
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);
    }
}
Commenter la réponse de Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
23 nov. 2007 à 14:33
0
Merci
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.
Commenter la réponse de Ombitious_Developper
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
23 nov. 2007 à 14:37
0
Merci
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
Commenter la réponse de ulysse00
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
23 nov. 2007 à 20:57
0
Merci
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
Commenter la réponse de ulysse00
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
24 nov. 2007 à 00:08
0
Merci
merci j'ai trouvé la solution

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

puis afficher sur jtexyfield
  text.setText(cellule1);
Commenter la réponse de ulysse00
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
24 nov. 2007 à 17:45
0
Merci
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.
Commenter la réponse de Ombitious_Developper
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
24 nov. 2007 à 20:07
0
Merci
je veux construire un jtable avec des cellules non modifiable comme le texte de jlabel ou jboutton
Commenter la réponse de ulysse00
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
24 nov. 2007 à 21:10
0
Merci
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.
Commenter la réponse de Ombitious_Developper
Messages postés
292
Date d'inscription
lundi 6 novembre 2006
Dernière intervention
12 mai 2013
24 nov. 2007 à 22:14
0
Merci
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; }
Commenter la réponse de ulysse00
0
Merci
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 :(
Commenter la réponse de basssouma

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.