Jtable avec model de rendue de cellule (header sur plusieur lignes)...

Soyez le premier à donner votre avis sur cette source.

Vue 23 191 fois - Téléchargée 2 478 fois

Description

Je vien de faire ce code en reponce a la question de lynouille ;o)
il permet de faire une JTable avec une entete de plusieur ligne ... ;o)
biensur c un exemple rapide il faut le retravailer et l adapter a son propre code evidement...

mais je pense qu il donne une bonne idee du fonctionnement ded rendu de la JTable

Source / Exemple :


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

/**

  • @author ludo
*
  • /
public class FrmTable extends JFrame { JTable tblProcess = null; public FrmTable() { super( "exemple de table" ); setBounds( 100, 100, 500, 500 ); JTable lst = new JTable(); TableModelNoEditable tmne = new TableModelNoEditable(); tblProcess = new JTable(); tblProcess.setModel( tmne ); { tmne.addColumn( "Nom" ); tmne.addColumn( "Créateur\nludo" ); tmne.addColumn( "Type\npas bo" ); tmne.addColumn( "Etat" ); Object[] vals = { "ma game", "moi", "Othello", "demarrer" }; tmne.addRow( vals ); tmne.addRow( vals ); tmne.addRow( vals ); } TableCellRenderer tbc = getTableCellRenderer(); TableCellRenderer tbch = getTableHeaderRenderer(); tblProcess.getTableHeader().setReorderingAllowed( false ); ///////////////////////////////////////////////////////// // lignes a metre en comment pour retrouver le comportement de la table par defau for (int i = 0; i < tmne.getColumnCount(); i++) { TableColumn tc = tblProcess.getColumnModel().getColumn( i ); tc.setCellRenderer( tbc ); tc.setHeaderRenderer( tbch ); } ////////////////////////////////////////////////////////// JScrollPane sclp = new JScrollPane(); sclp.getViewport().add( tblProcess ); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit( 0 ); } }); getContentPane().setLayout( new BorderLayout() ); getContentPane().add( sclp, BorderLayout.CENTER ); } public static void main(String[] args) { new FrmTable().setVisible( true ); } // permet de controler la possibilieter dedition // de n importe kel cellule : la on interdit tout class TableModelNoEditable extends DefaultTableModel { public boolean isCellEditable(int row, int col) { return false;} } private static TableCellRenderer label = null; public static TableCellRenderer getTableCellRenderer() { if ( label == null ) label = new TableGameRenderer(); return label; } static class TableGameRenderer extends JLabel implements TableCellRenderer { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setForeground(Color.black); Font font = table.getFont(); setOpaque(true); if (isSelected) font = new Font(font.getName(), Font.BOLD | Font.ITALIC, font.getSize()); else font = new Font(font.getName(), Font.PLAIN, font.getSize()); setFont(font); setHorizontalAlignment(JLabel.CENTER); setText((String) value); return this; } } public static TableCellRenderer getTableHeaderRenderer() { return new TableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // JLabel lbl = new JLabel(); JTextArea lbl = new JTextArea() { // methode a redefinir pour modifier l aspect de la cellule public void paint( Graphics g ) { super.paint( g ); } }; // lbl.setHorizontalAlignment( JLabel.CENTER ); Font font = table.getFont(); lbl.setOpaque( true ); font = new Font( font.getName(), Font.BOLD, font.getSize() + 2 ); lbl.setFont( font ); lbl.setForeground( Color.black ); lbl.setText( (String)value ); return lbl; } }; } }

Conclusion :


les methodes static non aucune obligation de l etre ;o) c que g repri des morceau d un vieu code ;o) pas tou refai ;o) héhé

+++

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
salut,

fais un post sur le forum..
Messages postés
2
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
21 avril 2010

salut,suis debutant en programmation oft mo problem est que j'ai pu amener des donnees a partir de ma BD mysql en utilisant le metadata en mode console mais jarriv pa a faire un code pour mettre le resultat dans jtable
merci davance ,je cherche depuis des jours
please help me
Messages postés
28
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
27 août 2008

Salut J ai un probleme dans le JTable ,j ai la solution pour afficher un table avec les colonnes et les donnees avec JScroll ,mais avec l aide de JTable mais avec JTable non
je le voir merci
Messages postés
95
Date d'inscription
dimanche 29 juillet 2007
Statut
Membre
Dernière intervention
27 août 2011
1
un code source trés clair et simple!! c comme ca qu'il faut programmer!! basé sur la simplicité des codes!! c bien!!

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.