JTable avec JTextField [Résolu]

ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 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 

15 réponses

Répondre au sujet
super_toinou 764 Messages postés mardi 25 mai 2004Date d'inscription 8 mars 2011 Dernière intervention - 22 nov. 2007 à 17:16
+3
Utile
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);

}

}

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de super_toinou
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 22 nov. 2007 à 21:24
+3
Utile
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]);
          }
       }
    }
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Ombitious_Developper
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 22 nov. 2007 à 20:44
0
Utile
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
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 22 nov. 2007 à 21:01
0
Utile
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
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 23 nov. 2007 à 00:03
0
Utile
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
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 23 nov. 2007 à 11:18
0
Utile
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
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 23 nov. 2007 à 14:33
0
Utile
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
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 23 nov. 2007 à 14:37
0
Utile
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
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 23 nov. 2007 à 20:57
0
Utile
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
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 24 nov. 2007 à 00:08
0
Utile
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
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 24 nov. 2007 à 17:45
0
Utile
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
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 24 nov. 2007 à 20:07
0
Utile
je veux construire un jtable avec des cellules non modifiable comme le texte de jlabel ou jboutton
Commenter la réponse de ulysse00
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 24 nov. 2007 à 21:10
0
Utile
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
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 24 nov. 2007 à 22:14
0
Utile
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
Utile
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.