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

Agents de placement/Fenêtres Java Discussion :

[JTable] Header ne s'affichent plus


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut [JTable] Header ne s'affichent plus
    Bonjour à tous.

    J'essaie de faire une JTable avec un Header sur plusieurs lignes.
    Pour ça j'ai utilisé le code du lien suivant:

    http://www.java2s.com/Code/Java/Swin...derExample.htm

    Mon problème est que mes noms de colonnes n'apparaissent plus.
    Si je retire la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBorder(UIManager.getBorder("TableHeader.cellBorder"));
    alors ils apparaissent mais je n'ai plus les contours du header....

    Ca ne doit pas être grand chose mais comme je ne suis pas habitué au java....

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Le fait de supprimer cette ligne fait qu'aucune bordure n'est associé au Header, c'est donc ... normal

    En revanche tu peut définir d'autre type de bordure avec BordureFactory.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBorder(BorderFactory.createEtchedBorder());

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Merci

    Mais mon problème est justement là. Lorsque je crée une bordure le texte de mes en-têtes ne s'affiche plus.

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Hé bien, je l'ai fait à partir du code que tu cite (avec le lien) et cela fonctionne parfaitement, je vais poster le code plus tard.

  5. #5
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Voici la ligne en question remplacer par une autre bordure, cela fonctionne parfaitement :
    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
    import java.awt.Component;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.StringReader;
    import java.util.Enumeration;
    import java.util.Vector;
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.ListCellRenderer;
    import javax.swing.UIManager;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumn;
     
    public class MultiLineHeaderExample extends JFrame {
    	MultiLineHeaderExample() {
    		super("Multi-Line Header Example");
     
    		DefaultTableModel dm = new DefaultTableModel();
    		dm.setDataVector(
    				new Object[][] { { "a", "b", "c" }, { "A", "B", "C" } },
    				new Object[] { "1st\nalpha", "2nd\nbeta", "3rd\ngamma" });
     
    		JTable table = new JTable(dm);
    		MultiLineHeaderRenderer renderer = new MultiLineHeaderRenderer();
    		Enumeration e = table.getColumnModel().getColumns();
    		while (e.hasMoreElements()) {
    			((TableColumn) e.nextElement()).setHeaderRenderer(renderer);
    		}
    		JScrollPane scroll = new JScrollPane(table);
    		getContentPane().add(scroll);
    		setSize(400, 110);
    		setVisible(true);
    	}
     
    	public static void main(String[] args) {
    		MultiLineHeaderExample frame = new MultiLineHeaderExample();
    		frame.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		});
    	}
    }
     
    class MultiLineHeaderRenderer extends JList implements TableCellRenderer {
    	public MultiLineHeaderRenderer() {
    		setOpaque(true);
    		setForeground(UIManager.getColor("TableHeader.foreground"));
    		setBackground(UIManager.getColor("TableHeader.background"));
     
    		// setBorder(UIManager.getBorder("TableHeader.cellBorder"));
    		setBorder(BorderFactory.createEtchedBorder());
     
    		ListCellRenderer renderer = getCellRenderer();
    		((JLabel) renderer).setHorizontalAlignment(JLabel.CENTER);
    		setCellRenderer(renderer);
    	}
     
    	public Component getTableCellRendererComponent(JTable table, Object value,
    			boolean isSelected, boolean hasFocus, int row, int column) {
    		setFont(table.getFont());
    		String str = (value == null) ? "" : value.toString();
    		BufferedReader br = new BufferedReader(new StringReader(str));
    		String line;
    		Vector v = new Vector();
    		try {
    			while ((line = br.readLine()) != null) {
    				v.addElement(line);
    			}
    		} catch (IOException ex) {
    			ex.printStackTrace();
    		}
    		setListData(v);
    		return this;
    	}
    }

Discussions similaires

  1. JTable ne s'affiche plus à partir d'une certaine taille
    Par Bassas dans le forum Composants
    Réponses: 4
    Dernier message: 09/07/2009, 15h34
  2. [JTable] Header : le rendre plus "stable"
    Par Lady dans le forum Composants
    Réponses: 8
    Dernier message: 24/04/2007, 09h45
  3. JTable qui ne s'affiche pas ?
    Par greg1602 dans le forum Composants
    Réponses: 10
    Dernier message: 28/11/2005, 08h38
  4. Réponses: 2
    Dernier message: 02/06/2005, 10h21
  5. [JTable] Comment ne pas afficher les titres ?
    Par FabienBxl dans le forum Composants
    Réponses: 3
    Dernier message: 08/10/2003, 15h01

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