Jtable qui prend les dimensions de la jframe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 604 fois - Téléchargée 20 fois

Contenu du snippet

C'est une table qui prend les dimensions de la fenetre
quels que soient les moyens utilises pour
les modifier (maximiser, minimiser, etirer vers le bas
ou contracter vers le haut, etirer vers la droite
ou contraxter vers la gauche - mais a droite
et a gauche c'est standard. -)
Une condition cependant : ne pas avoir trop de cellules ...

Source / Exemple :


/**
  *

  • Une table qui prend les dimensions de la fenetre
  • quels que soient les moyens utilises pour
  • les modifier (maximiser, etirer vers le bas
  • ou le haut, vers la droite ou la gauche - mais a droite
  • et a gauche c'est standard.)
*
    • /
import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import java.awt.Container; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.String; public class TabVarDemo { static JFrame frame; static JTable table; // le tableau static Dimension screen; static JScrollPane scrollpane; static int heightfram = 100; static int heightframinit; static int widthframinit; static int widthframmax; static int widthframscreen; static int widthfram = 100; static int cols = 10, lignes = 12; static int heightRw; static int heightRwtot; static int widthRw; public static void main(String [] args) { frame = new JFrame(cols + "X" + lignes); table = new JTable(lignes,cols); //Recupereration des dimensions de l'ecran utilise: screen = Toolkit.getDefaultToolkit().getScreenSize(); System.out.println("screen = " + screen); frame.setSize(screen); widthframscreen = frame.getSize().width; table.setPreferredScrollableViewportSize(screen); //scroller JScrollPane scrollpane = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); frame.getContentPane().add(scrollpane); heightRw = table.getRowHeight(); widthRw = 16; heightRwtot = heightRw * (lignes +1); heightfram = heightRwtot + 38; // avec cadre // heightfram = heightRwtot + 3; // sans cadre mais taille table figee heightframinit = heightfram; widthfram = (widthRw * cols); widthframinit = widthfram; frame.setSize(widthfram + 16,heightfram);// + 16 pour le scroll // frame.setUndecorated(true); // Pour supprimer le cadre frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); { ComponentListener listener = new ComponentAdapter() { public void componentResized(ComponentEvent evt) { Component c = (Component)evt.getSource(); // nouvelles dimensions Dimension newSize = c.getSize(); widthfram = frame.getSize().width; heightfram = frame.getSize().height; table.setPreferredScrollableViewportSize(newSize); widthfram = frame.getSize().width; heightfram = frame.getSize().height; if (heightfram < heightframinit) { heightfram = heightframinit; } if (widthfram <= widthframinit) { widthfram = widthframinit; } widthRw = widthfram / cols; heightRw = (heightfram - 54) / lignes; if (heightRw < 1) { heightRw = 16; } if (widthfram < (widthframscreen + 8)) // si pas maximise { int tailleframeajustee = ( (heightRw * lignes) + 54 ); heightfram = tailleframeajustee; } frame.setSize(widthfram,heightfram); table.setRowHeight(heightRw); frame.setVisible(true); } }; frame.addComponentListener(listener); } } }

A voir également

Ajouter un commentaire Commentaires
Messages postés
16
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2009

Je parlais de MA source TH1_MAN, pas de la tienne bien entendu...
Messages postés
28
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 juillet 2008

Pourqoui tu dit "horreur"???
t'a qu'a telecharger mon jeu "Bataille Navale"... tu verra l'utilité.
Messages postés
16
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2009

Salut,

J'ai ecri cette horreur il y a un an suite a une demande
precise (sur un autre site) et voila.

Merci a toi TH1.

Cordialement.

Dan.
Messages postés
28
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
24 juillet 2008

Salut,
Moi j'ai une autre méthode qui est plus générale et meilleur:
tu crée:
- une classe "table()" extends JPanel de propriété layout "GridLayout(x,y)"(x:nbre lignes, y:nbre de colonnes) qui represente la table.
- une classe "cellule()" extends JPanel qui représente une cellule.
- Dans le constructeur de la classe "table" tu fait:
for (int i=0; i<x; i++) {
for (int j=0; j<y; j++) {
add(new cellule());
}
}
- Dans la classe principale tu fait:
"table panelx = new table();"
puis tu fait "contentPane.add(panelx,null);"
- A la fin tu change la proprieté layout du panel "contentpane"(le panel principale) en "GridBagLayout".

Je sais ca parait un peu diffcile, mais c'est plus générale.
Messages postés
16
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
15 mars 2009

Je n'arrivais plus a me connecter....

Tout a fait d'accord.
A l'origine c'etait ainsi: if (heightRw < 16) {
J'ai ajoute if (heightRw < 1) pour eviter le "trap"
Ca fonctionnait et c'est reste.

je vais modifier mais ainsi: if (heightRw < 1) {
toujours pour eviter le "trap".

Merci.
Afficher les 8 commentaires

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.

Du même auteur (cs_danimo)