IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Comment utiliser le JButton dans un JTable


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Comment utiliser le JButton dans un JTable
    bonjour a tous
    dans le cadre de mon projet, je dois utiliser un jtable que je maitrise pas, en essayant tant bien que mal avec quelque forum, je suis arrivé a un resultat et depuis j'avance plus.
    mon tableau contient 4 colonnes, un jcombobox, 2 jtextfield et un boutton. mon problème c'est que en cliquant sur le bouton j'ouvre un jfilechooser et que je dois mettre le chemin du fichier selectionné dans le 2iéme jtexfield et j'y arrive pas
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    private JTable getTable() {
    		if (table == null) {
    			String[] nom_col = {"Type du matériel", "Adresse IP", "Fichier de configuration", ""};
    			Object[][] data = {{"", "", "", "parcourir"}};
    			table = new JTable(data,nom_col);
    			//table.setGridColor(Color.white);
    			table.setRowHeight(20);
    			table.setShowHorizontalLines(false);
    			table.setShowVerticalLines(false);
    			table.setSelectionBackground(Color.white);
    			table.setRowSelectionAllowed(false);
    			//table.setModel(new DefaultTableModel());
    			table.setShowGrid(true);
    			JComboBox t=new JComboBox();
    			//t.setBounds(new Rectangle(38, 247, 109, 24));
    			t.addItem("MSW");
    			t.addItem("ICP");
    			t.addItem("DS");
    			//t.setSelectedItem("MSW");
    			TableColumn typemat = table.getColumnModel().getColumn(0);
    			typemat.setCellEditor(new DefaultCellEditor(t));
    			ip_txt=getIp_txt();
    			TableColumn ipp = table.getColumnModel().getColumn(1);
    			ipp.setCellEditor(new DefaultCellEditor(ip_txt));
    			fichh=new JTextField();
    			//fichh.setBounds(new Rectangle(318, 245, 142, 23));
    			TableColumn fich = table.getColumnModel().getColumn(2);
    			fich.setCellEditor(new DefaultCellEditor(fichh));
     
    			table.getColumn("").setCellRenderer(new ButtonRenderer());
    			table.getColumn("").setCellEditor(new ButtonEditor(new JCheckBox()));
    		}
    		return table;
    	}
     
    	public class ButtonRenderer extends JButton implements TableCellRenderer {
     
    		  public ButtonRenderer() {
    		    setOpaque(true);
    		  }
     
    		  public Component getTableCellRendererComponent(JTable table, Object value,
    		                   boolean isSelected, boolean hasFocus, int row, int column) {
    		    if (isSelected) {
    		      setForeground(table.getSelectionForeground());
    		      setBackground(table.getSelectionBackground());
    		    } else{
    		      setForeground(table.getForeground());
    		      setBackground(UIManager.getColor("Button.background"));
    		    }
    		    setText( (value ==null) ? "" : value.toString() );
    		    return this;
    		  }
    		}
     
    	public class ButtonEditor extends DefaultCellEditor {
    		  public JButton button;
    		  public String    label;
    		  public boolean   isPushed;
     
    		  public ButtonEditor(JCheckBox checkBox) {
    		    super(checkBox);
    		    button = new JButton();
    		    button.setOpaque(true);
    		    button.addActionListener(new ActionListener() {
    		      public void actionPerformed(ActionEvent e) {
    		    	  JFileChooser chooser = new JFileChooser();//création dun nouveau filechosser
    					chooser.setApproveButtonText("Valider"); //intitulé du bouton
    					chooser.showOpenDialog(null); //affiche la boite de dialogue
    					if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    					{
    					fichh.setText(chooser.getSelectedFile().getAbsolutePath()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    					}
    		    	  fireEditingStopped();
    		      }
    		    });
    		  }
     
    		  public Component getTableCellEditorComponent(JTable table, Object value,
    		                   boolean isSelected, int row, int column) {
    		    if (isSelected) {
    		      button.setForeground(table.getSelectionForeground());
    		      button.setBackground(table.getSelectionBackground());
    		    } else{
    		      button.setForeground(table.getForeground());
    		      button.setBackground(table.getBackground());
    		    }
    		    label = (value ==null) ? "" : value.toString();
    		    button.setText( label );
    		    isPushed = true;
    		    return button;
    		  }
     
    		  public Object getCellEditorValue() {
    		    if (isPushed)  {
    		    	/*JFileChooser chooser = new JFileChooser();//création dun nouveau filechosser
    				chooser.setApproveButtonText("Valider"); //intitulé du bouton
    				chooser.showOpenDialog(null); //affiche la boite de dialogue
    				if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    				{
    				fichh.setText(chooser.getSelectedFile().getAbsolutePath()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    				}*/
    		    }
    		    isPushed = false;
    		    return new String( label ) ;
    		  }
     
    		  public boolean stopCellEditing() {
    		    isPushed = false;
    		    return super.stopCellEditing();
    		  }
     
    		  protected void fireEditingStopped() {
    		    super.fireEditingStopped();
    		  }
    		}
    quelqu'un peut-il m'aider??

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Points : 59
    Points
    59
    Par défaut
    Tu utilises la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setValueAt(Object value, int rowIndex, int columnIndex);
    quand tu récupères la bonne valeur, value étant ta valeur, rowIndex étant la ligne courante que tu modifies et columnIndex étant le numéno de la colonne dans laquelle tu veux mettre ta valeur.

    Tout devrait bien se passer.

Discussions similaires

  1. comment ajouter un Jbutton dans Jtable ?
    Par riamo dans le forum NetBeans
    Réponses: 2
    Dernier message: 07/05/2013, 12h48
  2. Comment mettre un JButton dans une JTable
    Par vinceLeBarbare dans le forum Composants
    Réponses: 6
    Dernier message: 05/06/2006, 11h43
  3. Réponses: 4
    Dernier message: 16/02/2006, 16h28
  4. Réponses: 7
    Dernier message: 25/11/2005, 17h11
  5. [C#]Comment utiliser un dataset dans plusieurs...
    Par Sonny dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/11/2005, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo