uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 2012
-
12 mars 2012 à 06:14
novitski2012
Messages postés1Date d'inscriptiondimanche 6 mai 2012StatutMembreDernière intervention29 mai 2012
-
29 mai 2012 à 18:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
novitski2012
Messages postés1Date d'inscriptiondimanche 6 mai 2012StatutMembreDernière intervention29 mai 2012 29 mai 2012 à 18:21
Bonsoir je voudrais Retourner le contenue de la case avec un Events avoir le texte de la cellule comment je dois faire
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 14 mars 2012 à 11:48
Ok, je jetterai un coup d'œil à l'occasion.
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 14 mars 2012 à 11:01
Si tu veux aller encore un peu plus loin, je t'invite à découvrir le site www.eteks.com. Tu y trouveras le tableur Jeks qui contient une bibliothèque de calcul de fonctions et d'expressions mathématiques. Les sources Java sont également incluses dans le téléchargement et c'est entièrement gratuit!
André
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 13 mars 2012 à 15:00
Ok, c'est pas grave.
En tout cas merci pour ton code.
a+
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 13 mars 2012 à 06:33
Ta description "Je n'utilise pas la classe JTable" n'explique pas pourquoi tu fais ce choix non classique. Alors je cherchais en vain le "truc spécial" qui ne serait pas possible avec JTable. Pardon, Julien, je ne voulais pas dire "tu es trop nul".
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 12 mars 2012 à 14:59
Ok, je m'incline. Je n'arrive jamais à utiliser les JTable, entre les TableModel, les TableHeader qui ont également un model, et les Renderer, je ne trouve jamais comment m'en sortir.
Je vais laisser la source telle qu'elle mais on est d'accord, ce que tu fais est préférable.
Par contre, le premier commentaire a tendance à m'énerver, c'est une reformulation de "tu es trop nul" et rien de tout ca n'est constructif.
Mais merci pour ton exemple qui lui est très constructif.
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 12 mars 2012 à 14:36
Eh bien, une JTable a une API par défaut pour afficher les en-têtes des colonnes. Il le fait en ajoutant la composante JTableHeader à la zone d'en-tête de colonne d'un JScrollPane. Bien qu'il n'y ait pas de composante dans l'API pour afficher les numéros de ligne, le JScrollPane prend également en charge une zone d'en-tête de ligne pour un composant en-0tête de ligne. Donc, tout ce que nous devons faire est de créer un composant en-tête de ligne et le problème est résolu. Exemple:
import java.awt.*;
import java.beans.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class Lanceur1 {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable t = new JTable(100, 30);
t.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollPane = new JScrollPane(t);
JTable rowTable = new RowNumberTable(t);
scrollPane.setRowHeaderView(rowTable);
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, rowTable.getTableHeader());
f.add(scrollPane);
f.setSize(300, 300);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
class RowNumberTable extends JTable implements ChangeListener, PropertyChangeListener {
private JTable main;
public RowNumberTable(JTable table) {
main = table;
main.addPropertyChangeListener(this);
setFocusable(false);
setAutoCreateColumnsFromModel(false);
setModel(main.getModel());
setSelectionModel(main.getSelectionModel());
TableColumn column = new TableColumn();
column.setHeaderValue(" ");
addColumn(column);
column.setCellRenderer(new RowNumberRenderer());
getColumnModel().getColumn(0).setPreferredWidth(50);
setPreferredScrollableViewportSize(getPreferredSize());
}
@Override
public void addNotify() {
super.addNotify();
Component c = getParent();
// Keep scrolling of the row table in sync with the main table.
if (c instanceof JViewport) {
JViewport viewport = (JViewport) c;
viewport.addChangeListener(this);
}
}
@Override
public int getRowCount() {
return main.getRowCount();
}
@Override
public int getRowHeight(int row) {
return main.getRowHeight(row);
}
@Override
public Object getValueAt(int row, int column) {
return Integer.toString(row + 1);
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
@Override
public void stateChanged(ChangeEvent e) {
// Keep the scrolling of the row table in sync with main table
JViewport viewport = (JViewport) e.getSource();
JScrollPane scrollPane = (JScrollPane) viewport.getParent();
scrollPane.getVerticalScrollBar().setValue(viewport.getViewPosition().y);
repaint();
}
@Override
public void propertyChange(PropertyChangeEvent e) {
// Keep the row table in sync with the main table
if ("selectionModel".equals(e.getPropertyName())) {
setSelectionModel(main.getSelectionModel());
}
if ("model".equals(e.getPropertyName())) {
setModel(main.getModel());
}
repaint();
}
private static class RowNumberRenderer extends DefaultTableCellRenderer {
RowNumberRenderer() {
setHorizontalAlignment(JLabel.CENTER);
}
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (table != null) {
JTableHeader header = table.getTableHeader();
if (header != null) {
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
}
}
if (isSelected) {
setFont(getFont().deriveFont(Font.BOLD));
}
setText((value == null) ? "" : value.toString());
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return this;
}
}
}
André
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 12 mars 2012 à 08:32
Pour comprendre où est la blague, essaye de reproduire ca avec une JTable et tu verras...
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 12 mars 2012 à 06:14
29 mai 2012 à 18:21
14 mars 2012 à 11:48
14 mars 2012 à 11:01
André
13 mars 2012 à 15:00
En tout cas merci pour ton code.
a+
13 mars 2012 à 06:33
12 mars 2012 à 14:59
Je vais laisser la source telle qu'elle mais on est d'accord, ce que tu fais est préférable.
Par contre, le premier commentaire a tendance à m'énerver, c'est une reformulation de "tu es trop nul" et rien de tout ca n'est constructif.
Mais merci pour ton exemple qui lui est très constructif.
12 mars 2012 à 14:36
André
12 mars 2012 à 08:32
12 mars 2012 à 06:14