Rechercher : dans
Par :

[JAVA] JPanel + scroll

Dernière réponse le 2 mai 2007 à 10:48:44 Panther.I, le 30 avr 2007 à 12:01:45 
 Signaler ce message aux modérateurs

Bonjour à tous !

j'ai un petit soucis

j'ai une classe qui etend JPanel dans laquel je place un JPanel vide et dans ce JPanel vide je remet un JPanel (avec des labels, des champs de texte ...).

le probleme, c'est que je n'arrive pas à afficher de scrollbar à ce dernier JPanel !

tous les composants s'affichent correctement (en tout cas une partie (la taille du JPanel)) mais pas de scrollbar !

Voici une partie de mon code

public class Page4 extends JPanel {

	//declaration  …

    public Page4(String animal, double CA) {
    	
    	//init  ….

           	
        /*****************declaration JPanel*******************/
           	
       panneau = new JPanel();
        panneau2 = new JPanel();
        
        panneau2.setBounds(0,350,950,300);
        add(panneau2);
        panneau2.setLayout(new BorderLayout());
        
        JScrollPane scroll = new JScrollPane(panneau);
        panneau2.add(scroll, BorderLayout.CENTER);
	
     	panneau.setLayout(null); 
		
		int i=0;
		int x=10;
		int y=10;

		while (rs.next()) 
		    {
			String CUG_prod = rs.getString(1);
			String design_prod = rs.getString(2); 
		
			tab_CUG[i] = new JLabel("" + CUG_prod);
    		             tab_LIB[i] = new JLabel("" + design_prod);

    		
    		tab_CUG[i].setBounds(x,y,L_LAB_CUG,H_LAB_CUG);
           	panneau.add(tab_CUG[i]);
           	x += 100;
           	
           	tab_LIB[i].setBounds(x,y,L_LAB_LIB,H_LAB_LIB);
           	panneau.add(tab_LIB[i]);
           	x += 320;

			i += 1;
			y += 50;
			x = 10;

} 




Quelqu'un pourrait-il m'aider à trouver une solution ou une autre facon de faire !

Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [JAVA] JPanel + scroll » dans :
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

kij_82, le 30 avr 2007 à 12:58:58
  • +1

C'est normal que ta scroll bar ne s'affiche pas puisque tu ne met aucune donnée dans ton JScrollPane.

Dans ta boucle while tu fais :

panneau.add(tab_CUG[i]);


Ce qui a pour conséquence de mettre tes données dans le premier JPanel (et non dans le JScrollPane).
Or, 'panneau' n'est affilié à aucun conteneur de ton application, il n'est donc pas affiché !

Il te manque apres ton while (ou avant comme tu veux) une instruction comme suit :
add(panneau);


Mais ce que je te conseil c'est de mettre tes infos dans le JScrollPane comme cela, en remplacant dans ta boucle while les lignes :

panneau.add(tab_CUG[i]);


Par :

scroll.add(tab_CUG[i]);



~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

2

Panther.I, le 30 avr 2007 à 14:30:59

Slt

comme tu l'a precisé, j'ai remplacé :

-panneau.setLayout(null) par scroll.setLayout(null);

-panneau.add(tab_CUG[i]) par scroll.add(tab_CUG[i]);


mais je n'ai toujours aucune srollbar qui apparait !

Répondre à Panther.I

3

Bj0, le 30 avr 2007 à 17:01:00

Essaye de mettre la ligne :
add(panneau2);

apres celle la:
panneau2.add(scroll, BorderLayout.CENTER);

Répondre à Bj0

5

Panther.I, le 2 mai 2007 à 08:16:14

J'ai testé, mais je n'ai toujours pas de scroll

Répondre à Panther.I

4

HackTrack, le 1 mai 2007 à 10:30:51

Salut!


Si je comprends bien ce que tu essayes de faire, une JTable sera plus appropriée.

Autre conseil: ne passe pas un ResultSet en paramètre à un composant Swing. Construit, par exemple, un String[][] dans ta classe DAO (celle qui accède à ta bas de données) et passe ce String[][] à ta classe Swing. Dans le cadre d'une JTable, cela te permety d'injecter directement tes data dasn le modèle de la table

;-)

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
* Refactored by HackTrack ;-)
*
public class Page4 extends JPanel {

	private JPanel panneau;

	private DefaultTableModel tableModel;

	private JTable table;

	private String animal;

	private double CA;
	
	private String[] columnNames = new String[]{"CUG","Design"};

	public Page4(String animal, double CA, String[][] dataTable) {
		super();
		this.animal = animal;
		this.CA = CA;
		initializeComponent(dataTable);
	}

	private void initializeComponent(String[][] dataTable) {
		tableModel = new DefaultTableModel(dataTable,columnNames);
		table=new JTable(tableModel);
		setLayout(new BorderLayout());
		setPreferredSize(new Dimension(320,200));

		JScrollPane scroll = new JScrollPane(table);
		add(scroll, BorderLayout.CENTER);
	}
	
	public static void main(String[] args){
		JFrame view = new JFrame("Demo");
		String[][] data=new String[][]{{"A","blah"},{"B","reblah"},{"C","encoreblah"}};
		view.add(new Page4("Lion",1,data));
		view.pack();
		view.setVisible(true);
		
	}
}

Répondre à HackTrack

6

Panther.I, le 2 mai 2007 à 08:18:51

Salut,

je voit bien ce que tu veux dire mais en fait je veux mettre des champ ,de texte et des label !

et je ne sais pas si on peut faire cela sur les JTables !

car mon application doit etre la plus simple possible a utiliser !

(donc peut-on inserer des jlabel et jtext dans une jtable ?)

Merci

Répondre à Panther.I

7

 Panther.I, le 2 mai 2007 à 10:48:44

Probleme resolu

j'ai remplace mes panels par un JTextArea

declaration et placement zone de texte
JTextArea texte = new JTextArea(chaineEspace);
texte.setEnabled(false);
JScrollPane defilant = new JScrollPane(texte);
defilant.setBounds(0,350,950,300);
add(defilant);


et ensuite

texte.add(tab_CUG[i]);


voila ca marche nickel

Répondre à Panther.I